![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с hook'ом [D7, WinXP]
new12345 © (2005-07-19 12:27:00)Нужно перехватывать нажатия клавиш на клавиатуре
вот что у меня получилось:
library Project1;
uses
Windows, sysutils,
Messages,
dialogs;
var
syshook : Hhook = 0;
{$R *.res}
function new1(code : integer; wparam : wparam; lparam : lparam) : lresult; stdcall;
var
t : ^tagMSG;
begin
t:= ptr(lparam);
if t^.message = WM_KEYDOWN then showmessage('some key was pressed');
result := callnexthookex(syshook, code, wparam, lparam);
end;
procedure run_hook; export;
begin
syshook := setwindowshookex(WH_getmessage, @new1, HInstance, 0);
end;
procedure stop_hook; export;
begin
unhookwindowshookex(syshook);
syshook := 0;
end;
exports
run_hook index 1,
stop_hook index 2;
begin
end.
нажатия клавиш перехватываются, но после нажатия Enter'а сообщения начинают дублироваться, тоесть после одного нажатия клавиши приходит два сообщения, то же самое происходит если использовать WH_KEYBOARD. Мож кто знает че делать?
new12345 (2005-07-19 13:56:00) [1]to Eraser
но отлавливается то WM_KEYDOWN - тоесть только нажатие.
кстати если несколько раз нажать enter то собщений бывает и 3
Eraser (2005-07-19 12:50:00) [2]new12345 (19.07.05 12:27)
Я так понимаю просто приходит сначала сообщение о нажатии, потом об отжатии кнопки.