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

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

Ожидание завершения программы из сервиса


Страницы:   1 2

race1 ©   (2007-09-10 10:41:00) 

Мне надо запустить из сервиса программу и после какого-то времени, если программа не завершится, убить её. Сделал тестовое приложение как vcl form app, всё работает.

Вот код:

var
 si: TStartupInfo;
 pi: TProcessInformation;
begin
 ZeroMemory(@si, SizeOf(si));
 si.cb := SizeOf(si);

 CreateProcess(PChar(ProgramName), PChar(ProgramParams), nil, nil, FALSE, 0, nil, nil, si, &pi);
 
 if WaitForSingleObject(pi.hProcess, 60000) WAIT_OBJECT_0 then
   TerminateProcess(pi.hProcess, 1);

 CloseHandle(pi.hProcess);
 CloseHandle(pi.hThread);
...


Сделал запуск и ожидание в сервисе - WaitForSingleObject завершается сразу, и говорит "WAIT_OBJECT_0", хотя запущенная программа работает. Если узнать код возврата (GetExitCodeProcess(pi.hProcess, &ret)), то ret будет единицей.


Сергей М.   (2007-09-10 11:01:00) [21]


> говорит "WAIT_OBJECT_0", хотя запущенная программа работает


Так не бывает.

WAIT_OBJECT_0 однозначно говорит, что интересующий процесс завершился.


Anatoly Podgoretsky   (2007-09-10 10:59:00) [22]

> race1  (10.09.2007 10:54:05)  [5]

А зачем нам обсуждать заведомо не реальный код.
Может ты Кеннеди убил и "мамой клянусь - это не я"


clickmaker   (2007-09-10 10:57:00) [23]


> Батник может быть написан криво, например, там будет команда
> pause

а почему бы не писать батник прямо?
программы для работы под ковром всеж-таки должны отличаться от интерактивных, разве нет?


race1   (2007-09-10 10:54:00) [24]

CreateProcess работает, я же говорю, в реальном коде есть проверка ошибок. CreateProcess возвращает true.


Reindeer Moss Eater   (2007-09-10 10:50:00) [25]

Обработка возвращаемых значений опущена

Гетластеррор вызывал после того, как createprocess вернул тебе False?
Ну и фик ли ты хочешь?


race1   (2007-09-10 10:49:00) [26]

>Reindeer Moss Eater
Обработка возвращаемых значений опущена

>clickmaker
Есть задание, которое надо выполнять с заданной периодичностью (раз в две минуты, например), надо вызывать батник во время выполнения задания. Батник может быть написан криво, например, там будет команда pause. Т.е. остальных итераций не будет и сервис тупо повиснет.


Reindeer Moss Eater   (2007-09-10 10:42:00) [27]

CreateProcess - это функция


clickmaker   (2007-09-10 10:42:00) [28]


> Мне надо запустить из сервиса программу

зачем? она что должна сделать?


Страницы:   1 2

Наверх

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