
24.12.2014, 18:41
|
 |
Прохожий
|
|
Регистрация: 22.12.2014
Сообщения: 14
Версия Delphi: XE5
Репутация: 50
|
|
Код:
function RunProgram(name, params: string; runWait: boolean;
waitTime: cardinal): boolean;
var
startInf : TStartupInfo;
procInf : TProcessInformation;
exitCode : cardinal;
begin
FillChar(startInf, SizeOf(TStartUpInfo), 0);
startInf.cb := SizeOf(TStartUpInfo);
try
result := CreateProcess(nil,
PChar('"' + name + '" ' + params),
nil,
nil,
false,
NORMAL_PRIORITY_CLASS,
nil,
nil,
startInf,
procInf );
except
result := false;
end;
if result and runWait then
with procInf do
begin
if waitTime = 0
then
WaitforSingleObject(hProcess, INFINITE)
else
WaitforSingleObject(hProcess, waitTime);
result := GetExitCodeProcess(hProcess, exitCode);
CloseHandle(hThread);
CloseHandle(hProcess);
end;
end;
begin
if not RunProgram('C:\Windows\System32\notepad.exe','D:\1.txt', true, 5000)
then
exit;
RunProgram('C:\Windows\System32\notepad.exe','D:\2.txt', false, 0);
end;
и всё-таки Вам необходимо дождаться выполнения первой программы... Есть два выхода: 1) ждать пока программа сама закроется(рискуем повиснуть) и 2) дать время на выполнение программы, после чего продолжать свои действия.
|