![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
hook [D7, WinXP]
dikiy © (2005-12-04 14:07:00)
var
Hook: HHook;
function GetMsgProc(code: integer; wParam: Longint; lParam:
Longint): longword; stdcall;
//начало выполнения
procedure TForm1.FormCreate(Sender: TObject);
begin
Hook:=SetWindowsHookEx(WH_GETMESSAGE, @GetMsgProc, 0, 0);
end;
function GetMsgProc(code: integer; wParam: Longint; lParam:
Longint): longword; stdcall;
begin
if code< 0 then
begin
result:=CallNextHookEx(Hook,code,wParam,lparam);
Exit;
end;
if ( PMsg(lParam).message = wm_char)then
begin
//обработка пойманого сообщения
Form1.Memo1.Lines.Add('a');
end;
result:=0;
CallNextHookEx(Hook,code,wParam,lparam);
end;
Пытаюсь поймать wm_char, но на него не срабатывает.
Может надо использовать другой тип ловушки(с возможностью изменения сообщения)?
Lamer@fools.ua (2005-12-04 14:56:00) [1]>> dikiy (04.12.05 14:07)
Вы пытаетесь установить глобальную ловушку, а глобальная ловушка такого типа должна находиться в отдельной библиотеке (DLL). В Вашем случае глобальная ловушка, видимо, не нужна:
Hook:=SetWindowsHookEx(WH_GETMESSAGE, @GetMsgProc, 0, GetCurrentThreadId);
P.S. Читайте справку по функции SetWindowsHookEx().