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

Вниз

Отлов завершения програм.   Найти похожие ветки 

 
VovanM ©   (2002-03-11 18:01) [0]

Нужно зафиксировать время запуска и завершения любой програмЬІ (игрЬІ). Проблема в том чтоПрограма может запустить другой процес и завершить вЬІполнениє.


 
paul_shmakov ©   (2002-03-12 18:00) [1]

для решения этой задачи необходимо перехватывать обращения к функции CreateProcess.
про то, как перехватывать вызовы функций api очень много написано, в том числе и здесь. поэтому описывать это процесс не буду.
единственно, что хотелось бы заметить: функцию CreateProcess может вызвать не сам процесс, а, например, подгруженная в его адресное пространство dll или дочерний процесс.
выход из этой ситуации следующий: необходимо перехватывать вызовы не только к CreateProcess, но и к LoadLibrary. как только перехватили LoadLibrary (или CreateProcess), вызываем процедуру установки перехватчиков api функций в этой dll или дочернем процессе.

допустим, теперь вы перехватили все обращения к CreateProcess. в каждом перехватчике вызываем оригинальную функцию CreateProcess, а возвращенный ей идентификатор процесса каким-либо образом отправляем нашему процессу, который как раз и следит за временем запуска и завершения.
отправлять можно разными способами: через проецируемые в память файлы, посылкой сообщения WM_COPYDATA и т.п.

наше приложение следит за появлением этих данных. при появлении каждого нового идентификатора процесса, запоминаем время запуска. потом ждем завершения одного из процессов функцией WaitForMultipleObjects. как только завершился, запоминаем время завершения. и т.д.


 
paul_shmakov ©   (2002-03-12 18:51) [2]

кстати, перехватить на 100% все вызовы к CreateProcess из обычного приложения не получится. только драйвером.
здесь описано почему:
http://www.rsdn.ru/forum/message.asp?mid=21412#21412


 
Sasha9 ©   (2002-03-12 18:59) [3]

можно ещё хуком(Hook) перехватить сообщения WM_CAREATE, WM_CLOSE, WM_DESTROY


 
Raptor ©   (2002-03-12 22:14) [4]

2 Sasha9
Это относится только к окнам, а никак не к процессам.



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

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

Наверх




Память: 0.47 MB
Время: 0.013 c
14-39834
alexandervasjuk
2002-04-02 15:16
2002.05.13
Помни имя своё, Delphi


1-39754
kull
2002-04-27 14:21
2002.05.13
TabOrder......


7-39870
DimNK
2002-02-14 10:23
2002.05.13
Работа с модемом


7-39868
Konsul
2002-02-15 12:31
2002.05.13
Пуск-Программы


6-39818
Olfi
2002-02-25 18:24
2002.05.13
Как проверить существование e-maila?