Delphi tip#50: to execute a program and wait a result
How can I execute a program and have my code wait until it is finished?
The next procedure allows you to execute a program and to wait until it's finished:
functionWinExecAndWait32(FileName: string; Visibility: Integer): dWord; varzAppName: array[0..512] ofChar; zCurDir: array[0..255] ofChar; WorkDir: string; StartupInfo: TStartupInfo; ProcessInfo: TProcessInformation; beginStrPCopy(zAppName, FileName); GetDir(0, WorkDir); StrPCopy(zCurDir, WorkDir); FillChar(StartupInfo, Sizeof(StartupInfo), #0); StartupInfo.cb := Sizeof(StartupInfo); StartupInfo.dwFlags := STARTF_USESHOWWINDOW; StartupInfo.wShowWindow := Visibility; if notCreateProcess(nil, zAppName, { pointer to command line string }nil, { pointer to process security attributes }nil, { pointer to thread security attributes }false, { handle inheritance flag }CREATE_NEW_CONSOLE or{ creation flags }NORMAL_PRIORITY_CLASS, nil, { pointer to new environment block }nil, { pointer to current directory name }StartupInfo, { pointer to STARTUPINFO }ProcessInfo) thenResult := -1 { pointer to PROCESS_INF }else
beginWaitforSingleObject(ProcessInfo.hProcess, INFINITE); GetExitCodeProcess(ProcessInfo.hProcess, Result); CloseHandle(ProcessInfo.hProcess); CloseHandle(ProcessInfo.hThread); end; end;
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。