Главная страница
    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.47 MB
Время: 0.008 c
7-10478
NightKiller
2003-05-24 10:16
2003.08.04
Свойства файла


4-10512
xn0bys
2003-05-28 13:32
2003.08.04
DialogBox в плугине к WinAmp 2.9


14-10429
Vlad Oshin
2003-07-16 15:40
2003.08.04
Боитесь ли Вы виртуальной жизни?


3-10077
Hollywood
2003-07-10 19:15
2003.08.04
Дайте хороший компонент прямого доступа к Access файлу!


3-10093
Spawn
2003-07-11 18:10
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский