|
완전한 답변은 아닙니다.
아래는 노트패드를 실행시키고 노트패드가 끝날때까지
대기하는 겁니다.
끝나야 리턴값을 받을수 있겠지요..참고만 하십시요.
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 를 사용해봤습니다.
: 프로그램이 실행되기는 하지만 리턴값을 어떻게 받아야 할지 모르겠네요.
: 위의 두가지의 경우에는 제대로 리턴값을 못받는 것 같더라구요.
: 답변 부탁드립니다.
:
|