![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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;
но это все равно не срабатывает когда форма (любая) передвигается. ???