Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Krinkels

Пользователь


Сообщения: 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