Delphi FAQ - Как мне запустить какую-нибудь программу

ОГЛАВЛЕНИЕ


Как мне запустить какую-нибудь программу

Как мне запустить какую-нибудь программу? А как подождать, пока эта
программа не отработает? Как выяснить, работает ли программа или уже
завершилась? Как принудительно закрыть выполняющуюся программу?

WinExec() или ShellExecute. У второй больше возможностей.

(SO): CreateProcess() в параметре process info возвращает handle запущенного
процесса. Вот и делаешь WaitForSingleObject(pi.hProcess, INFINITE);

(AA): (Win16) Delay можно взять из rxLib.
handle := WinExec(...);
if handle >= 32 then
  while GetModuleUsage(handle) > 0 do
    Delay( nn );
else
 raise ....
(AM): Чтобы выяснить, работает ли программа, используйте GetProcessTimes(),
параметр lpExitTime.

(Win32) Для принудительного завершения процесса -- TerminateProcess.

(Win16) (RR): Hадо послать программе сообщение WM_QUIT:

Handle := Winexec(App, 0);
PostMessage(Handle, WM_QUIT, 0, 0);