Форум: "WinAPI";
Текущий архив: 2002.06.24;
Скачать: [xml.tar.bz2];
ВнизЛовить запуск и завершение приложения? Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.06.24;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.01 c