WH_SYSMSGFILTER Hook
От: SvarogBarg http://www.compexpsoft.com
Дата: 19.07.04 09:27
Оценка:
Уважаемые коллеги.
Ставлю hook WH_SYSMSGFILTER обрабатываю HookCode = MSGF_MENU и дальше смотрю что за сообщения приходят в lParam (это указатель на структуру MSG) message. Так вот там при открытии popup меню вываливаются сообщения WM_MOUSEMOVE,WM_MENUSELECT,WM_TIMER но никак не WM_INITMENU или WM_INITMENUPOPUP.
Так как все-таки отловить именно момент открытия popup меню.
Спасибо.
Re: WH_SYSMSGFILTER Hook
От: BlackSpy  
Дата: 19.07.04 10:20
Оценка:
Здравствуйте, SvarogBarg, Вы писали:

SB>Уважаемые коллеги.

SB>Ставлю hook WH_SYSMSGFILTER обрабатываю HookCode = MSGF_MENU и дальше смотрю что за сообщения приходят в lParam (это указатель на структуру MSG) message. Так вот там при открытии popup меню вываливаются сообщения WM_MOUSEMOVE,WM_MENUSELECT,WM_TIMER но никак не WM_INITMENU или WM_INITMENUPOPUP.
SB>Так как все-таки отловить именно момент открытия popup меню.
SB>Спасибо.

WH_SYSMSGFILTER ловит далеко не все мессаги — лучше использовать WH_CALLWNDPROC.
WM_INITXXXX посылается не менюхе, а окну-родителю.

Поэтому лучше либо обрабатывать WM_INITXXX в своем окне, либо использовать WH_CALLWNDPROC. Если вы хотите блокировать либо менять эти сообщения "на лету", то хуками эта задача не решается. Придется перехватывать SendMessage/PostMessage, но лучше просто придумать как обойтись без модификации WM_INITXXXX-сообщений.
Re[2]: WH_SYSMSGFILTER Hook
От: SvarogBarg http://www.compexpsoft.com
Дата: 19.07.04 14:54
Оценка:
Здравствуйте, BlackSpy, Вы писали:

BS>Здравствуйте, SvarogBarg, Вы писали:


BS>WH_SYSMSGFILTER ловит далеко не все мессаги — лучше использовать WH_CALLWNDPROC.

BS>WM_INITXXXX посылается не менюхе, а окну-родителю.

BS>Поэтому лучше либо обрабатывать WM_INITXXX в своем окне, либо использовать WH_CALLWNDPROC. Если вы хотите блокировать либо менять эти сообщения "на лету", то хуками эта задача не решается. Придется перехватывать SendMessage/PostMessage, но лучше просто придумать как обойтись без модификации WM_INITXXXX-сообщений.



Спасибо, попробую.
В принципе мне надо только зафиксировать факт открытия popup меню в любом окне ничего не меняя.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.