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

Вниз

Ловушка WH_Keyboard…   Найти похожие ветки 

 
SemFLY ©   (2002-11-23 22:32) [0]

Мне надо чтобы моя программа перехватывала нажатие клавиш на клавиатуре и показывала сообщение с той клавишей, которую я нажму, допустим «Нажата клавиша ‘q’»

Ловушку я поставил, а вот как именно узнать какая клавиша нажата ?

Вот мой код :

function PressKey(code : integer; wParam : word;
lParam : longint) : longint; stdcall;
begin
if code = HC_ACTION then
begin
// какой код должен быть тут
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
If SetWindowsHookEx(WH_Keyboard,@PressKey, HInstance, 0) > 0 then ShowMessage("Hook Setup !");
end;


------------

Спасибо ! :))


 
Morfein ©   (2002-11-23 22:55) [1]

Код клавиши передаётся параметром wParam.
Нажата или отпущена клавиша, определяет 31 бит параметра lParam
Название клавиши можнно получить через функцию GetKeyNameText


 
SemFLY ©   (2002-11-24 00:44) [2]

Morfein, если не трудно, не мог бы ты привести пример, как всё это будет выглядеть ввиде кода...


 
Song ©   (2002-11-24 10:51) [3]

ShowMessage("Нажата клавиша "+Chr(WParam))


 
Cosmic ©   (2002-11-24 16:48) [4]

Кстати, а можно ли эту ловушку сделать глобальной, не используя ДЛЛ?


 
Morfein ©   (2002-11-24 20:13) [5]

to Cosmic : можно, но на 2k/XP работать не будет...


 
SemFLY ©   (2002-11-25 01:30) [6]

Всё работает, но ткт ещё вопрос возник, а в определённом окне чтобы отловить нажатие клавиши ?


 
Fantasist ©   (2002-11-25 08:06) [7]


> Morfein © (24.11.02 20:13)
> to Cosmic : можно, но на 2k/XP работать не будет...


Интересно... А как это будет работать в win95/98? MSDN черным по белому пишет, что глобальная ловушка должна быть размещена в dll ибо код обрабатывающий ловушку должен быть загружен во все исполняющиеся процессы.


 
Song ©   (2002-11-25 08:10) [8]

>>to Cosmic : можно, но на 2k/XP работать не будет...
Чушь. Глобальная ловушка не может быть без dll.


 
SemFLY ©   (2002-11-25 17:48) [9]

...


 
Morfein ©   (2002-11-25 20:23) [10]

Чушь. Глобальная ловушка не может быть без dll
to Song : самонадеянное заявление :)) ты же не пробовал...
всё делается просто... процедура-ловушка может быть расположена в этом самом исполняемом модуле и просто экспортирована из него.
Плохо только то, что всместе с процедурой в память будет загружено дохрена ненужного там в данный момент кода самой exe-шки...
Я лично это проверял, если не веришь, могу прислать клавиатурный шпион, работающий без dll"a и сам убедишься!
А на NT"ях не работает по непонятной причине... ловушка устанавливается, но не вызывается системой...


 
SemFLY ©   (2002-11-25 20:59) [11]

Morfein, а ты мне можешь отправить код этого шпиона, буду очень признателен...
Email : loop@mailru.com



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

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

Наверх




Память: 0.49 MB
Время: 0.027 c
3-36977
Alexei113
2002-12-18 18:01
2003.01.13
---|Ветка была без названия|---


1-37147
Spook
2002-12-29 13:08
2003.01.13
Юзер имеет право на ошибку


7-37410
alex134
2002-11-03 01:29
2003.01.13
Вопрос для шарящих (работа с адресным пространством)


1-37164
beginer1
2002-12-29 19:40
2003.01.13
Поиск без тормозов


1-37050
DJ!
2003-01-02 19:04
2003.01.13
TTreeView