Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.009 c
3-77251
DmitryK
2002-05-29 20:11
2002.06.24
ADO в консольных приложениях


14-77584
Мальфет
2002-05-21 07:45
2002.06.24
Хто знает, что за байда?


6-77531
DrKot
2002-04-14 18:45
2002.06.24
Порт 139 в windows как с ним работать


1-77477
AL2002
2002-06-11 16:55
2002.06.24
Программа на разных компах


14-77588
savva
2002-05-22 10:48
2002.06.24
П Р И З Ы В !!! Модераторам и Мастерам !!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский