Форум: "Основная";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
ВнизКак отследить окончание процесса Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.031 c