Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.08.04;
Скачать: [xml.tar.bz2];

Вниз

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

 
sosv   (2003-06-02 14:33) [0]

Если можно, то как?


 
DVM   (2003-06-02 16:01) [1]

Те, которые создают окна, можно отловить хуком на WH_SHELL. Причем тут даже dll не обязательна.


 
sosv   (2003-06-02 16:38) [2]

DLL необязательна начиная с Win2000. Я правильно понял?


 
Morfein   (2003-06-02 17:42) [3]

DLL обязательна начиная с Win2000


 
DVM   (2003-06-02 18:16) [4]


> Morfein © (02.06.03 17:42)
> DLL обязательна начиная с Win2000


DLL не нужен! Я устал спорить со всеми!

Можно "сказать" системе, что данная программа - оболочка и ей будут пересылаться персональные сообщения.
Как-то так. Кому надо - пришлю полностью рабочий код БЕЗ DLL

const

RSH_DEREGISTER = 0;
RSH_REGISTER = 1;
RSH_REGISTER_PROGMAN = 2;
RSH_REGISTER_TASKMAN = 3;

HSHELL_ACTIVATESHELLWINDOW = 3;
HSHELL_WINDOWCREATED = 1;
HSHELL_WINDOWDESTROYED = 2;
HSHELL_WINDOWACTIVATED = 4;
HSHELL_GETMINRECT = 5;
HSHELL_REDRAW = 6;
HSHELL_TASKMAN = 7;
HSHELL_LANGUAGE = 8;

var WM_SHELLHOOK:integer;

procedure RegisterShellHook(Wnd:hWnd;n:dword); stdcall; external "shell32.dll" index 181;

begin

...

WM_SHELLHOOK := RegisterWindowMessage("SHELLHOOK");
if WM_SHELLHOOK<>0 then
begin
RegisterShellHook(0, 1);
if not IsWinNT then
RegisterShellHook(hMainWnd, RSH_REGISTER)
else
RegisterShellHook(hMainWnd, RSH_REGISTER_TASKMAN);
end;
...

end;
//-------------------------------
ну и в оконной процедуре:

function MainWndProc(wnd:HWND; Msg:Integer; wParam:wParam; lParam:lParam):integer; stdcall;

begin
//------------------------------------------------------------------------------
if Msg = WM_SHELLHOOK then
begin
case wParam of
//Создано новое окно верхнего уровня
HSHELL_WINDOWCREATED: ;
//Окно уничтожено
HSHELL_WINDOWDESTROYED: ;
//Окно активируется
HSHELL_WINDOWACTIVATED: ;
//Изменился текст заголовока или иконка окна
HSHELL_REDRAW: ;
end;
end;


 
Morfein   (2003-06-02 18:30) [5]

DVM, ты забыл свой предыдущий, пока писал следующий? Там ясно написано Те, которые создают окна, можно отловить хуком на WH_SHELL. Вот на это я и сказал, что ДЛЛ для этого обязательна, начиная с Windows 2000. А потом уже ты упомянул RegisterWindowMessage и прочее. А с этим я и не спорю.


 
DVM   (2003-06-02 20:50) [6]


> Morfein ©

да...эта...что я там написал WH_SHELL я действительно запамятовал.

Хотя...В shell32.dll скорее всего и ставится именно этот хук (WH_SHELL) + некоторые другие.


 
Digitman   (2003-06-03 11:46) [7]


> DVM



> //Создано новое окно верхнего уровня
> HSHELL_WINDOWCREATED: ;


а что, разве создание окна верхнего уровня есть факт старта нового процесса ? разве уже стартованный процесс не имеет права создавать произвольное кол-во окон верхнего уровня ?

конечно, можно в хук-процедуре анализировать, не принадлежит ли вновь создаваемое окно уже работающему процессу, но это немало осложняет логику

imho, корректней было бы внедрение во все уже работающие процессы ф-ции для перехвата API-вызова CreateProcess[Ex].
как это сделать - уже вопрос техники : то ли это будет установка глоб.хука, то ли старт внедренного трэда ... зависит от платформы и от изобретательности автора)

глобальный перехват вызова CreateProcess[Ex] даст возможность отслеживать старт любых процессов, будь то GUI, консоль или сервис


 
DVM   (2003-06-03 12:01) [8]


> Digitman ©

Да конечно, все это правильно, но я думаю автор вопроса хотел ловить именно окна.

> даст возможность отслеживать старт любых процессов, будь
> то GUI, консоль или сервис

код выше консольные приложения тоже отлавливает.



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

Форум: "WinAPI";
Текущий архив: 2003.08.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
14-10353
Катерина
2003-07-18 11:02
2003.08.04
До свидания!


14-10374
CinCinNut
2003-07-16 11:01
2003.08.04
сабж, имхо...


14-10427
Knight
2003-07-18 01:37
2003.08.04
Вытаскивание писем из Outlook Express?


6-10330
MikeFW
2003-05-29 12:17
2003.08.04
отправка сообщений в локальной сети


3-10091
byTural
2003-07-13 17:03
2003.08.04
Проблемы при удалении из БД





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский