Q&A

  • CreateProcess가 실행이 안되는 경우가 발생할때?
AAA_install.exe 이라는 프로그램을 CreateProcess 를 사용해서 실행을 시키는데...

CreateProcess로 프로그램이 실해되는 컴이 있는가 하면...안되는 컴도 있습니다...
특별한 안되는 원인을 모르겠네요.
저와 같은 문제를 경험하신분들...해결 방법 좀 알려주시기 바랍니다.


function InstallAAAModule: boolean;
const
MB_TIMEDOUT = 32000;
var
si : STARTUPINFO;
pi : PROCESS_INFORMATION;
bResult : Boolean;
iRet: Integer;
iFlags: Integer;
begin
ZeroMemory( @si, sizeof(si) );
si.cb := sizeof(si);
ZeroMemory( @pi, sizeof(pi) );

bResult := CreateProcess( nil,                            // No module name (use command line).
                           'C:\AAAA\Lib\AAA_install.exe', // Command line.
                           nil,                            // Process handle not inheritable.
                           nil,                            // Thread handle not inheritable.
                           FALSE,                          // Set handle inheritance to FALSE.
                           0,                              // No creation flags.
                           nil,                            // Use parent's environment block.
                           nil,                            // Use parent's starting directory.
                           si,                             // Pointer to STARTUPINFO structure.
                           pi );                           // Pointer to PROCESS_INFORMATION structure. )


if ( not bResult ) then
begin
   Application.MessageBox( PChar( '모듈 설치시 오류가 발생하였습니다.' + #13#10 +
                                  '시스템을 종료합니다.'  ), PChar( '오류' ), MB_OK + MB_ICONEXCLAMATION );
   Result := false;
   exit;
end;

WaitForSingleObject( pi.hProcess, INFINITE );
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );

Result := true;
end;
1  COMMENTS
  • Profile
    최용일 2007.01.23 08:21
    안녕하세요. 최용일입니다.

    안될때 GetLastError함수 호출하셔서 왜 안되는가 파악해보세요...

    ^^ 항상 즐코하세요...