Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как отловить момент закрытия консольного приложения?


Jet ©   (2005-08-03 16:05:00) 

Приветствую,
Как отловить момент закрытия консольного приложения,  запущенного под Windows? Ситуация такая: мне нужно во время программы выполнить консольное приложение, а после ее завершения продолжить работу программы. Для Windows приложений сделать такое не проблема (на примере калькулятора):
--
...
Handle :=  WinExec('calc.exe',SW_SHOW);
Handle :=  FindWindow('SciCalc', Nil);
while (FindWindow('SciCalc',NIL) <> 0) do
begin
 sleep(1000);
end;
...
--
Для Windows приложений получилось, подскажите как сделать такое же для консольных приложений, с учетом того, что запущено не одно консольное приложение?


Jet   (2005-08-04 18:00:00) [1]

Игорь, спасибо, помогло.


Jet   (2005-08-03 17:31:00) [2]

Никто не поможет с кодом?


Игорь Шевченко   (2005-08-03 17:29:00) [3]


procedure CreateProcessAndWait (Image, Params: string);
var
 pi: PROCESS_INFORMATION;
 si: _STARTUPINFOA;
 CreateResult: BOOL;
begin
 FillChar (si, SizeOf(si), 0);
 FillChar (pi, SizeOf(pi), 0);
 si.cb := SizeOf(si);
 CreateResult := CreateProcess (PChar(Image), PChar(Format('%s %s', [Image, Params]), nil, nil, false, 0, nil,
   nil, si, pi);
 if CreateResult then begin
   WaitForSingleObject (pi.hProcess, INFINITE);
// Дождались окончания
   CloseHandle (pi.hProcess);
 end;
end;


Digitman   (2005-08-03 16:52:00) [4]


> Игорь Шевченко


Держись.


Jet   (2005-08-03 16:47:00) [5]

А можете поделиться кодом, если не сложно?


Игорь Шевченко   (2005-08-03 16:24:00) [6]

Jet ©   (03.08.05 16:22) [3]

CreateProcess вместо WinExec - получишь ID процесса


Jet   (2005-08-03 16:22:00) [7]

А как получить имя приложения? У меня выдает только ConsoleWindowsClass.


Digitman   (2005-08-03 16:11:00) [8]

консольные Win-приложения есть такие же равноправные приложения, как и прочие Win-приложения

WinExec() - способ не лучший (если не сказать - не подходящий)

см. CreateProcess() + [Msg]WaitFor- ф-ции в составе WinAPI


Игорь Шевченко   (2005-08-03 16:10:00) [9]

CreateProcess + GetExitCodeProcess


Наверх

Титульная страница Поиск, карта сайта Написать письмо