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

Вниз

Ловить запуск и завершение приложения?   Найти похожие ветки 

 
ghost_by ©   (2002-04-25 13:34) [0]

Как ловить запуск любой программы и ее завершение? Задача состоит в том, чтобы вести что-то вроде лога запускаемых приложений и время работы этих приложений, но как это сделать - не знаю.
Или хотя бы подскажите в каком направлении копать.


 
Song ©   (2002-04-25 13:40) [1]

В направлении FindWindow(), EnumWindows()


 
ghost_by ©   (2002-04-26 07:27) [2]

В направлении FindWindow(), EnumWindows() - это как? По таймеру, через определенный интервал EnumWindows() и смотреть не изменилось ли что?
А через hook никак нельзя.


 
Song ©   (2002-04-26 08:19) [3]

Именно так.
А Вы знаете сообщение какое возникает при старте любой программы? Нет? Значит про хук забудьте.


 
Ally ©   (2002-04-26 09:32) [4]

> Song

В добавлении к сказанному: помимо FindWindow() и EnumWindows() можно использовать ф-цию CreateToolhelp32Snapshot(), которая "takes a snapshot of the processes and the heaps, modules, and threads used by the processes".


 
Vovchik ©   (2002-04-26 16:00) [5]

С помощью хуков, по моему, можно отлавливать создание окон, но не запуск процессов. А CreateToolhelp32Snapshot - можно процессы ловить, только тормозить будет.


 
Almaz ©   (2002-04-26 23:47) [6]


> ghost_by ©

Запуски всех программ можно отловить только написать драйвер. Но большую часть запусков можно отловить следующим образом: в реестре в ключе HKEY_CLASSES_ROOT\exefile\shell\open\command значение по умолчанию установите в виде "C:\MYPROG.EXE %1 %*". Тепрь при попытке запуска почти любого EXE-файла будет каждый раз запускаться программа C:\MYPROG.EXE а в качестве командной строки ей будет передано имя запускаемого файла (с путем) и командная строка этого EXE. Теперь ваша программа должна сама запустить предложенную программу. Если этого не сделать - в Windows будет весьма проблематично запустить какую-либо программу :)

p.s. Этот метод сработает не на все запуски, но запуски программ из Explorer"a, Главного меню, WinCommander"a, Far"a ловит 100%.

Удачи.


 
Vovchik ©   (2002-04-27 00:02) [7]

> Almaz
Но точно не отловит запуск с помощью CreateProcess.


 
Almaz ©   (2002-04-27 00:16) [8]


> Vovchik ©

Совершенно верно. Но зато отловит ShellExecute и WinExec. А так как explorer и почти все файл-менеджеры используют именно ShellExecute, то большая часть , но как я уже сказал не все, запусков будет отловлено.
Кстати, перехвачены будут также все запуски программ из под доса.

Удачи


 
ghost_by ©   (2002-04-27 18:08) [9]


> Almaz © (26.04.02 23:47)
> Запуски всех программ можно отловить только написать драйвер.
>

А по подробнее можно? Очень нужно.


 
paul_shmakov ©   (2002-04-27 19:23) [10]

2 ghost_by:

> Almaz © (26.04.02 23:47)
> Запуски всех программ можно отловить только написать драйвер.
>

А по подробнее можно? Очень нужно.


если нет проблем с написанием драйверов, то можно.

и для семейства win9x/me, и для nt/2k/xp есть возможность в драйвере получать уведомления о создании процессов.
под win9x виртуальный драйвер устройства может обрабатывать сообщения CREATE_PROCESS от VWIN32. в nt/2k можно зарегистрировать свою callback-функцию обработчик с помощью PsSetCreateProcessNotifyRoutine.

более подробно для win9x:
http://www.internals.com/utilities/win95/procspy32/ProcSpy32.zip
а для nt:
http://www.microsoft.com/msj/defaulttop.asp?page=/msj/0199/nerd/nerd0199top.htm


 
ghost_by ©   (2002-04-28 01:25) [11]

Спасибо.



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

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

Наверх




Память: 0.49 MB
Время: 0.014 c
4-77691
IPisk
2002-04-26 12:50
2002.06.24
Задержка запуска процесса


1-77343
Voland_s
2002-06-12 20:09
2002.06.24
OUTPUT параметр в ехе-файле


14-77606
copyr25
2002-05-18 21:28
2002.06.24
---|Ветка была без названия|---


1-77432
Belov
2002-06-10 15:27
2002.06.24
Как получить скриншот


4-77683
Ильясов Вадим
2002-04-26 12:06
2002.06.24
Ошибка при взятии иконки с программ