Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.04;
Скачать: CL | DM;

Вниз

Проблема с hook ом   Найти похожие ветки 

 
new12345   (2005-07-19 12:27) [0]

Нужно перехватывать нажатия клавиш на клавиатуре
вот что у меня получилось:

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. Мож кто знает че делать?


 
Eraser ©   (2005-07-19 12:50) [1]

new12345   (19.07.05 12:27)

Я так понимаю просто приходит сначала сообщение о нажатии, потом об отжатии кнопки.


 
new12345   (2005-07-19 13:56) [2]

to Eraser
но отлавливается то  WM_KEYDOWN - тоесть только нажатие.
кстати если несколько раз нажать enter то собщений бывает и 3



Страницы: 1 вся ветка

Текущий архив: 2005.09.04;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.041 c
4-1121333677
Prov
2005-07-14 13:34
2005.09.04
DM5


3-1122349116
-=snoop=-
2005-07-26 07:38
2005.09.04
как отключить exclusive длступ у ADOQuery ?


1-1123692689
rolex
2005-08-10 20:51
2005.09.04
Какая маскимальная длина у TidTCPServer в комманде WriteLn?


2-1123240002
Гость22
2005-08-05 15:06
2005.09.04
Как изменить имя проекта?


14-1123534105
GanibalLector
2005-08-09 00:48
2005.09.04
Наш человек ;) Я рыдалЪ