Запуск программы и ожидание завершения определенное время

{codecitation class=»brush: pascal; gutter: false;» width=»600px»}

Автор: Kostas

WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****

>> Запуск программы и ожидание завершения опр.время

Запускает внешнюю программу и ожидает его завершения определённое время,

если истекает время то, программа продолжает работу не зависимо от

состояния внешней программы (На случай подвисания вн. прог-мы, особенно DOS)

Зависимости: Windows

Автор: Kostas, kostas@tut.by, РБ Гомельская обл. г. Речица

Copyright: вроде delphi.mastak.ru (слегка доработанно)

Дата: 03 мая 2002 г.

***************************************************** }

function ExecAndWait(aCmd: string; WaitTimeOut: cardinal = INFINITE): Cardinal;

var

si: STARTUPINFO;

pi: PROCESS_INFORMATION;

res: BOOL;

r: cardinal;

begin

with si do

begin

cb := sizeof(si);

lpReserved := nil;

lpDesktop := nil;

lpTitle := PChar(‘External program «‘ aCmd ‘»‘);

dwFlags := 0;

cbReserved2 := 0;

lpReserved2 := nil;

end;

res := CreateProcess(nil, PChar(aCmd), nil, nil, FALSE, 0, nil, nil, si, pi);

if res then

WaitForSingleObject(pi.hProcess, WaitTimeOut);

GetExitCodeProcess(pi.hProcess, r);

result := r;

end;

// Пример использования:

procedure Exec(CommandStr, WaitTime);

begin

if ExecAndWait(CommandStr, WaitTime) = WAIT_FAILED then

ShowMessage(‘Истекло время ожидания внешней программы ‘ CommandStr);

end;

{/codecitation}

Добавить комментарий