Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.23;
Скачать: CL | DM;

Вниз

Как отследить окончание процесса   Найти похожие ветки 

 
Tornado ©   (2004-05-12 09:11) [0]

У меня есть некая прога котораяв процессе своей работы (около 30-40 сек) создает лог-файл, причем постоянно дописывает в него данные пока работает. Прога сама не закрывается, просто останавливает работу, перестает писать в лог и все. Мне нужно отловить момент когда она закончила работать (может как-то через лог-файл?) и закрыть ее. Может есть какие еще мысли? Эту прогу запускаю через CreateProcess


 
Alx2 ©   (2004-05-12 09:23) [1]

WaitForSingleObject?


 
Alx2 ©   (2004-05-12 09:25) [2]

Сорри. Невнимательно прочел. "Перестала работать" сбило :)


 
Polevi ©   (2004-05-12 09:26) [3]

проверь открыт ли лог файл


 
Alx2 ©   (2004-05-12 09:30) [4]

Может, выручит FindFirstChangeNotification и его семейство?


 
Fedia   (2004-05-12 09:41) [5]

Может быть проверять FileAge лог-файла, если, например, 1 минуту не меняется, то работа с файлом прекращена и программу можно закрывать. Хотя предложение Polevi ©   (12.05.04 09:26) [3] мне больше нравится.


 
Tornado ©   (2004-05-12 10:00) [6]

>>> Polevi ©   (12.05.04 09:26) [3]

пожалуйста подскажите как проверить, книги нет под рукой, в нете что-то не найду. Спасибо за предложение


 
Fay ©   (2004-05-12 10:04) [7]

var
 h : Cardinal;
begin
 h := CreateFIle("c:\boot.ini", 0, 0, nil, OPEN_EXISTING, 0, 0);
 if h = Cardinal(-1) then
   begin
     if GetLastError = 32 then
       ShowMessage("Типа открыт");
     Exit;
   end;
 CloseHandle(h);
 ShowMessage("Похоже, не открыт");  
end;


 
pasha_golub ©   (2004-05-12 10:06) [8]

А вдруг программа не закрывает лог-файл?


 
Fay ©   (2004-05-12 10:13) [9]

2pasha_golub ©   (12.05.04 10:06) [8]
Да запросто! 8)


 
evvcom ©   (2004-05-12 10:19) [10]


> Прога сама не закрывается, просто останавливает работу,
> перестает писать в лог и все. Мне нужно отловить момент
> когда она закончила работать

Что значит "останавливает работу"? Усыпляет основной поток? Если это "перестает писать в лог", то это совсем не "закончила работать". Вы уж молодой человек определитесь, чего вы хотите. Если программа закончила писать в лог файл, то сама она может и завершиться без посторонней помощи, а этот момент отловить уже просто (см. [1]).


 
Polevi ©   (2004-05-12 10:20) [11]

если закрывает можно так

procedure TForm1.Button1Click(Sender: TObject);
var
 h:THandle;
begin
 h:=FindFirstChangeNotification("c:\",false,FILE_NOTIFY_CHANGE_LAST_WRITE);
 WaitForSingleObject(h,INFINITE);
 FindCloseChangeNotification(h);
 beep;
end;


 
Polevi ©   (2004-05-12 10:21) [12]

>evvcom ©   (12.05.04 10:19) [10]
я так понял в лог пишет чужая программа


 
evvcom ©   (2004-05-12 10:24) [13]


> я так понял в лог пишет чужая программа

Я так не понял:

> У меня есть некая прога котораяв процессе своей работы (около
> 30-40 сек) создает лог-файл, причем постоянно дописывает
> в него данные пока работает.


 
Polevi ©   (2004-05-12 10:32) [14]

У меня есть на диске некая прога котораяв процессе своей работы (около
> 30-40 сек) создает лог-файл, причем постоянно дописывает
> в него данные пока работает.

:))


 
Tornado ©   (2004-05-12 10:35) [15]

>>> evvcom ©   (12.05.04 10:24) [13]

прога чужая в доску (компании IBM), вообщем это выглядит так: запускается прога, просто форма с Memo или чем-то похожим, в Memo бежит список который строит эта прога, этот же список она паралельно пишет в лог. Когда список заканчивается, то и прокрутка оного в memo тоже останавливается но прога не закрывается (а очень бы хотелось чтобы она закрывалась сама!). Вот мне и надо ее закрыть НО не раньше пока она построит весь список и закинет его в лог. Надеюсь понятно описАл :)


 
Fay ©   (2004-05-12 10:39) [16]

Ну так чё, закрывает она файл или нет?


 
Tornado ©   (2004-05-12 10:45) [17]

>>> Fay ©   (12.05.04 10:39) [16]

не знаю не проверял еще но по сути должна закрывать


 
evvcom ©   (2004-05-12 10:46) [18]


> Tornado ©   (12.05.04 10:35) [15]

Ну ладно. А чего она продолжает работать? Возможно, что еще что-то в лог запишет? Или до скончания века больше ничего туда и не пишет?
Что можно посоветовать? Попробуй [11], если же файл остается открытым, то мне кажется, что самым корректным в этом случае будет внедрение dll и мониторинг записи в файл.


 
panov ©   (2004-05-12 10:56) [19]

Скомбинировав [1] и [5] можно решить эту задачу, мне кажется.



Страницы: 1 вся ветка

Текущий архив: 2004.05.23;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.055 c
14-1083495103
Ig
2004-05-02 14:51
2004.05.23
А почему бы не сделать новый форум, а точнее новую тему форума?


14-1083217242
han_malign
2004-04-29 09:40
2004.05.23
WebFile.ru - открылся прикольный сервис...


7-1082112699
nv_
2004-04-16 14:51
2004.05.23
Как заставить окно показаться?


3-1083158365
Stupid
2004-04-28 17:19
2004.05.23
SQL c Null


14-1083325731
Sema
2004-04-30 15:48
2004.05.23
Как вставить гиперссылку в документ word ?