СообЧа > База Знаний > Программирование > Delphi

Вопрос

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

Ответ

WinExec() или ShellExecute. Первая оставлена для совместимости с Win 3.1, у второй к тому же больше возможностей.

uses
    ShellApi;

ShellExecute(Handle,'Open','c:\path\prog.exe',nil,nil,SW_SHOWNORMAL)

Последний параметр функции описан в Win32.hlp

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

(Win16) Delay можно взять из rxLib.

handle := WinExec(…);
if handle >= 32 then
    while GetModuleUsage(handle) > 0 do
        Delay( nn );
else
  raise …

Чтобы выяснить, работает ли программа, используйте GetProcessTimes(), параметр lpExitTime.
(Win32) Для принудительного завершения процесса используйте TerminateProcess.
(Win16) (RR): Hадо послать программе сообщение WM_QUIT:

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

Из конференции Delphi



Copyright © 2000-2004 Сообщество Чайников
Контактная информация