![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ловушка WH_Keyboard… [D5, WinXP]
SemFLY © (2002-11-23 22:32:00)Мне надо чтобы моя программа перехватывала нажатие клавиш на клавиатуре и показывала сообщение с той клавишей, которую я нажму, допустим «Нажата клавиша ‘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;
------------
Спасибо ! :))
SemFLY (2002-11-25 20:59:00) [1]Morfein, а ты мне можешь отправить код этого шпиона, буду очень признателен...
Email : loop@mailru.com
Morfein (2002-11-25 20:23:00) [2]Чушь. Глобальная ловушка не может быть без dll
to Song : самонадеянное заявление :)) ты же не пробовал...
всё делается просто... процедура-ловушка может быть расположена в этом самом исполняемом модуле и просто экспортирована из него.
Плохо только то, что всместе с процедурой в память будет загружено дохрена ненужного там в данный момент кода самой exe-шки...
Я лично это проверял, если не веришь, могу прислать клавиатурный шпион, работающий без dll"a и сам убедишься!
А на NT"ях не работает по непонятной причине... ловушка устанавливается, но не вызывается системой...
SemFLY (2002-11-25 17:48:00) [3]...
Song (2002-11-25 08:10:00) [4]>>to Cosmic : можно, но на 2k/XP работать не будет...
Чушь. Глобальная ловушка не может быть без dll.
Fantasist (2002-11-25 08:06:00) [5]
> Morfein © (24.11.02 20:13)
> to Cosmic : можно, но на 2k/XP работать не будет...
Интересно... А как это будет работать в win95/98? MSDN черным по белому пишет, что глобальная ловушка должна быть размещена в dll ибо код обрабатывающий ловушку должен быть загружен во все исполняющиеся процессы.
SemFLY (2002-11-25 01:30:00) [6]Всё работает, но ткт ещё вопрос возник, а в определённом окне чтобы отловить нажатие клавиши ?
Morfein (2002-11-24 20:13:00) [7]to Cosmic : можно, но на 2k/XP работать не будет...
Cosmic (2002-11-24 16:48:00) [8]Кстати, а можно ли эту ловушку сделать глобальной, не используя ДЛЛ?
Song (2002-11-24 10:51:00) [9]ShowMessage("Нажата клавиша "+Chr(WParam))
SemFLY (2002-11-24 00:44:00) [10]Morfein, если не трудно, не мог бы ты привести пример, как всё это будет выглядеть ввиде кода...
Morfein (2002-11-23 22:55:00) [11]Код клавиши передаётся параметром wParam.
Нажата или отпущена клавиша, определяет 31 бит параметра lParam
Название клавиши можнно получить через функцию GetKeyNameText