Пользователь
Сообщения: 90
Благодарности: 22
|
Профиль
|
Отправить PM
| Цитировать
Могу привести еще один пример, функция для запуска exe с параметром и ожидание его завершения.
читать дальше »
Код:
function ExecAndWait(const FileName, Params: string; WindowState: Word): Longword;
var { by Pat Ritchey }
StartupInfo: TStartupInfo;
ProcessInfo: TProcessInformation;
CmdLine: string;
begin
CmdLine := '"' + FileName + '"' + Params;
FillChar(StartupInfo, SizeOf(StartupInfo), #0);
StartupInfo.cb := SizeOf(StartupInfo);
StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := WindowState;
if not CreateProcess(nil,
PChar(CmdLine), // 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 {PChar(ExtractFilePath(FileName)),}
StartupInfo, // pointer to STARTUPINFO
ProcessInfo) // pointer to PROCESS_INF
then Result := WAIT_FAILED
else
begin
while WaitForSingleObject(ProcessInfo.hProcess, 0) = WAIT_TIMEOUT do
begin
Application.ProcessMessages;
Sleep(50);
end;
WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
GetExitCodeProcess(ProcessInfo.hProcess, Result);
CloseHandle(ProcessInfo.hProcess);
CloseHandle(ProcessInfo.hThread);
end;
end;
//Пример использования
procedure TForm1.Button1Click(Sender: TObject);
begin
ExecAndWait( 'C:\Program Files\NSIS\makensis.exe', 'C:\myscript.nsi', SW_HIDE );
end;
|
-------
Рок моя честь, а моя честь моя жизнь. krinkels.org
Отправлено: 20:23, 31-07-2011
| #1448
|