![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
hook на нажатие клавишь, ошибка
SkyN © (2003-09-01 13:01:00)
Ставлю хук на нажатие клавишь.
Если активным является не окно моего преложения, то возникает системная ошибка (1400): "неверный дескриптор окна", и похоже что при каждом нажатии клавишь гибнет explorer.
var
HookHandle: HHook = 0;
Function KeyboardHook(Code: Integer; ParamW: WPARAM; ParamL: LPARAM): LRESULT;stdcall;
Begin
If Code IN [HC_ACTION, HC_NOREMOVE] Then
Form1.Memo1.Lines.Add(IntToStr(ParamW)+"//"+IntToStr(Code));
Result := CallNextHookEx(HookHandle, Code, ParamW, ParamL);
End;
procedure TForm1.FormCreate(Sender: TObject);
begin
HookHandle:=SetWindowsHookEx(WH_KEYBOARD, @KeyboardHook, HInstance, 0);
if HookHandle=0 then Application.MessageBox("Не поставлен хук","Ошибка")
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
UnhookWindowsHookEx(HookHandle);
end;
Song (2003-09-01 15:19:00) [1]
SetWindowsHookEx(WH_KEYBOARD, @KeyboardHook, HInstance, 0); - это ты пытаешься сделать глобальную ловушку, тогда как call-back функция хука у тебя в программе.
NAlexey (2003-09-01 15:04:00) [2]
Третий параметр в SetWindowsHookEx который у тебя HInstance сделай его - 0. Четвертый параметр сделай GetCurrentThreadId.
SkyN (2003-09-01 14:37:00) [3]
помогите плиз