![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Еще раз про глобальные ловушки [D7, WinXP]
-=Germe$=- © (2007-05-08 09:10:00)Есть вот такая процедура в ДЛЛке. Ловушка обрабатыват WH_KEYBOARD. Иногда данная процедура работает... Иногда нет... Что в ней не так?
procedure Hook(Code : integer; wParam : Word; lParam : Longint) stdcall;
begin
If Code<0 then
begin
CallNextHookEx(HookHandle, Code, wParam, lParam);
Exit;
end;
CallNextHookEx(HookHandle, Code, wParam, lParam);
PostMessage(AppWnd, WM_HOOK, wParam, lParam);
end;
А это функция установки ловушки.
procedure SetHook(flag: Boolean; AW: HWND)export; stdcall;
begin
If flag then
begin
HookHandle:=SetWindowsHookEx(WH_KEYBOARD, @Hook, hInstance, 0);
WM_MYKEYHOOK:= RegisterWindowMessage('WM_HOOK');
AppWnd:=AW;
end
else
begin
UnhookWindowsHookEx(HookHandle);
end;
end;
Leonid Troyanovsky (2007-05-08 10:42:00) [1]
> -=Germe$=- © (08.05.07 09:10)
> Иногда данная процедура работает... Иногда нет... Что в
> ней не так?
Считай, что все.
Начиная с того, что не procedure Hook, а function,
не Word, а WPARAM & etc.
RTFM: msdn.microsoft.com
--
Regards, LVT.
begin...end (2007-05-08 10:37:00) [2]Начнём с того, что заголовок функции ловушки неправильный.
-=Germe$=- (2007-05-08 09:16:00) [3]Вот так в идеале... WM_HOOK:= RegisterWindowMessage('WM_HOOK');