· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Хук на закрытие и свертывание чужих окон

Посл.отвђт Сообщенiе


Дата: Июн 23, 2004 17:31:22

Доброго времени суток!
Господа, подскажите, пожалуйста, как устнавить хук на сообщения типа "свернуть" и "закрыть" окно. Хотелось бы повесить свой обработчик на эти дела.

Заранее спасибо всем.


Дата: Июн 23, 2004 19:56:38

Хмм..

У Икзелиона пример хука есть. Там прога перехватывает класс хэндл и еще что-то (не помню) контрола, над которым висит мышка. Там он использует хук мышки. Поройся в СДК на тему хуков или туториал его посмотри. Там вроде есть что-то для системы. Ну и напоследок. Когда получишь хэндл активного окна, у него можно перехватить главную процедуру через GetWindowLong, а там уже как фантазии хватит. По перехвату процедуры смотри пример того же Икзелиона на сабклассинг.

Вот, собсно, и все..


Дата: Июн 24, 2004 02:55:24

n0p
Все гораздо прозаичнее.
uRegMsg = RegisterWindowMessage("SHELLHOOK");
RegisterShellHook(hWnd, 3);


В оконной процедуре по приходе этого сообщения в wParam смотреть HSHELL_WINDOWCREATED, HSHELL_WINDOWDESTROYED.

Преимущество в том, что для этого хука не нужна DLL.

А если нужен больший контроль, можно юзать стандартные хуки (в нашем случае WH_CBT), но придется делать отдельную DLL.


Дата: Июн 24, 2004 06:11:17

Да, я тут опять с недокументированными функциями полез.
RegisterShellHook имеет ординал #181 в shell32.dll.

Официальная немного измененная ее версия появилась в Win2K под названием RegisterShellHookWindow. В WinXP ее убрали из инклудов, В WinXP SP1 и Win2K3 снова добавили, но предупреждают, что она может не поддерживаться в новых версиях.


Дата: Июн 24, 2004 13:15:23

Toxic
Т.е. если я хочу сделать многоплатформенную поддержку, то этот вариант не совсем подходит и лучше пользоваться именно хуками?


Дата: Июн 25, 2004 04:20:32

С недокументированными функциями сложно что-то сказать. Они могут со временем перейти в разряд официальных (например, SHObjectProperties), могут быть удалены или модифицированы(например, файловые меню), а могут остаться без изменений.

Для стопроцентной надежности лучше, конечно, брать WH_CBT.


Дата: Июн 25, 2004 14:20:50

Спасибо за разъяснение.
А нет ли у кого примера или более менее понятной доки на эту тему?


Дата: Июн 26, 2004 02:17:26

Tristania
В MSDN хуки расписаны прекрасно. Читай и твори.


Дата: Июн 29, 2004 11:52:07
Правка

Tristania
Zaratustra как-то писал кейлоггер, наверняка и с тобой делился сорцами :)

Там хук на клавиатуру, чем не пример?
А вообще настоятельно рекомендую PlatformSDK вдумчиво почитать…


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.086