|
^^ 그래서 참고만 하랬던 겁니다..^^
사실 리턴값을 받을수 있나 createprocess 를 보긴 봤는데
별다른점을 찾지못했구요.
도스처럼 리턴값이 있는지도 잘 모르겠구요..
글쎄요..부족하겠지만,,저 같으면
결국 자식프로그램이 어떤 결과값을 부모한테
알려주도록 만들으면 되지 않나 싶은데요.
소켓으로 알려주던,파일을 만들어서 알려주던,아니면 DDE 로 알려주던지요,,,
정확한 답변이 아니라 죄송합니다..끝.
도난경보기 님이 쓰신 글 :
: 태윤님 답변 감사합니다....
: 그런데 아래 소스만으로는 좀 부족한데요....
: 제 경우에 적용을 시켜보면 결국 notepad 가 자식이 되는데....
: notepad 가 리턴하는 값은 뭐죠?
: 아래 예제는 폼에서 버튼 클릭했을때 메모장을 열어서 거기에
: autoexec.bat 파일의 내용을 보여주는건데.....
: 메모장이 닫힐때까지 원래 프로그램은 기다리고 있구요....
: 메모장이 닫히면 원래 프로그램이 다시 나타나는데....
: 메모장이 리턴하는건 뭐죠?
: 그리고 메모장이 리턴하는 값을 받는 부분은 어디죠?
: 암만 찾아봐도 없는것 같은데요....
: 혹시 제 질문을 잘못 이해하신건 아닌지.....
: 아니면 빨리 답변해주시고 싶은 마음에 다른 부분을 빠뜨리신건지....
: 다시한번 정확한 답변 주시면 감사하겠습니다.
:
: 방태윤 님이 쓰신 글 :
: : 완전한 답변은 아닙니다.
: : 아래는 노트패드를 실행시키고 노트패드가 끝날때까지
: : 대기하는 겁니다.
: : 끝나야 리턴값을 받을수 있겠지요..참고만 하십시요.
: :
: : void __fastcall TForm1::Button1Click(TObject *Sender)
: : {
: : STARTUPINFO si;
: : PROCESS_INFORMATION pi;
: :
: : ZeroMemory( &si, sizeof(STARTUPINFO) );
: : ZeroMemory( &pi, sizeof(PROCESS_INFORMATION) );
: :
: : si.cb = sizeof( STARTUPINFO );
: : si.dwFlags = STARTF_USESHOWWINDOW;
: : si.wShowWindow = SW_SHOWNORMAL;
: :
: : CreateProcess( NULL, "notepad c:\\autoexec.bat", NULL, NULL, FALSE,
: : 0, NULL, NULL, &si, &pi );
: :
: : WaitForInputIdle( GetCurrentProcess(), INFINITE );
: : if( pi.hProcess ){
: : DWORD dwExitCode = STILL_ACTIVE;
: : while ( dwExitCode == STILL_ACTIVE )
: : {
: : WaitForSingleObject( pi.hProcess, 1000 );
: : GetExitCodeProcess( pi.hProcess, &dwExitCode );
: : Update();
: : }
: : }
: : }
: : .끝.
: :
: : 도난경보기 님이 쓰신 글 :
: : : 제목 그대로 입니다. 제가 만드는 프로그램에서 다른 실행 파일을 실행시키고 싶습니다.
: : : 원래 프로그램을 부모, 불러와서 실행할 파일을 자식이라고 했을때,
: : : 부모에서 자식을 호출합니다. 자식은 제대로 되면 1, 제대로 안되면 -1을 리턴합니다.
: : : 부모는 자식이 어떤 값을 리턴하는지 받아서 1이 리턴되었으면 A 라는 일을 하고,
: : : -1 이 리턴되었으면 B 라는 일을 하고 싶습니다.
: : : 다른 프로그램을 실행시키기 위해, winexec 랑 shellexecute 를 사용해봤습니다.
: : : 프로그램이 실행되기는 하지만 리턴값을 어떻게 받아야 할지 모르겠네요.
: : : 위의 두가지의 경우에는 제대로 리턴값을 못받는 것 같더라구요.
: : : 답변 부탁드립니다.
: : :
|