Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

WM_WINDOWPOSCHANGED как правильно на него ставить хук? [D5, D6, D7, NT4, Win2k, WinXP]


neodiX ©   (2003-01-11 03:07:00) 

Пробую ставить хук на WH_GETMESSAGE или WH_CALLWNDPROC:
ShareInf^.Hook3:=SetWindowsHookEx(WH_GETMESSAGE, @GetMsgHook, HInstance, 0);
ShareInf^.Hook4:=SetWindowsHookEx(WH_CALLWNDPROC, @WndCallHook, HInstance, 0);


потом предположим проверяю в WH_GETMESSAGE:
Function GetMsgHook(Code: Integer; ParamW: WPARAM; ParamL: LPARAM): LRESULT;stdcall;
Begin
If Code IN [HC_ACTION] Then
Begin
{ if TMsg(Pointer(ParamL)^).message=WM_WINDOWPOSCHANGED then
PostMessage(ShareInf^.AppHandle, WM_USER+300,1,2);
End;
Result := CallNextHookEx(ShareInf^.Hook3, Code, ParamW, ParamL)
End;

но я не получаю не одного мессаджа, что бы не делал. Может тут есть какие то подводные камни? Помогите мастера ответом.


neodiX   (2003-01-11 18:29:00) [1]

ну никак не получается мониторить WM_SIZE или WM_MOVE в чем может быть загвоздка?


neodiX   (2003-01-11 07:43:00) [2]

так в том то и дело что не работает и я не могу понять почему.


Song   (2003-01-11 07:35:00) [3]

Вообще по идее должно работать.
Последний пример ставится на WH_GETMESSAGE ?


neodiX   (2003-01-11 06:34:00) [4]

может кто знает как правильно мониторить передвижение любого окна?


neodiX   (2003-01-11 04:07:00) [5]

как я понял в место WM_WINDOWPOSCHANGED ставится хук на WM_MOVE and WM_SIZE. Ну хорошо теперь я проверяю так:
Function GetMsgHook(Code: Integer; ParamW: WPARAM; ParamL:
LPARAM): LRESULT;stdcall;
Begin
If Code IN [HC_ACTION] Then
Begin
{ if TMsg(Pointer(ParamL)^).message=WM_МОVE
then
PostMessage(ShareInf^.AppHandle, WM_USER+300,1,2);
End;
Result := CallNextHookEx(ShareInf^.Hook3, Code, ParamW,
ParamL)
End;

но это все равно не срабатывает когда форма (любая) передвигается. ???


Наверх

Титульная страница Поиск, карта сайта Написать письмо