| Автор
| Сообщение |
|
|
|
Цитата |
|
Помогите пожалуйста разобраться пишу прогу которая будет перехватывать нажатие клавиш
| Код: |
library KLAVA;
uses
Windows,
Messages,
SysUtils,
Variants,
Classes,
Graphics,
Controls,
Forms,
Dialogs;
var
Ловушка:HHook = 0;
function Клавиатура_шпион(code : integer; wParam : word;
lParam : longint) : longint; stdcall;
var
Клавиша: array[0..16] of Char;
begin
GetKeyNameText(lParam,Клавиша, sizeof(Клавиша));
ShowMessage(Клавиша);
//Передаем сообщение другим ловушкам в системе
CallNextHookEx(Ловушка, Code, wParam, lParam);
showmessage(Клавиша);
Result := 0;
end;
//Процедура запуска
procedure КЛАВА(Работать:Boolean) export; stdcall;
begin
if Работать=true then
begin
//Запускаем ловушку
Ловушка:= SetWindowsHookEx(WH_KEYBOARD,
@Клавиатура_шпион, HInstance, 0);
end
else
begin
//Отключить ловушку
UnhookWindowsHookEx(Ловушка) ;
Ловушка:= 0;
end;
end;
exports КЛАВА index 1;
end.
|
1) При выводи нажатой клавиши происходит её вывод несколько раз.Как устранить ?
2) Символ нажатой клавиши выводица на английском. Можноли какнибудь получать на обоих языках или в коде? |
|
| В начало |
|
 |
|
|
 |
 Ktf
Администратор

Возраст: 32
Знак зодиака: 
Зарегистрирован: 15.05.2005
Сообщения: 1502
Откуда: localhost
|
|
|
Цитата |
|
1. ингорируем повторы
| Код: | | if (HiWord(lParam) and KF_UP) = 0 then ... |
2. код нажатой клавиши смотрим в wParam _________________ Пойду посплю перед сном. |
|
| В начало |
|
 |
|
|
|
Цитата |
|
| Ktf спасибо первая проблема решена. А как из wParam код достать ? |
|
| В начало |
|
 |
 Ktf
Администратор

Возраст: 32
Знак зодиака: 
Зарегистрирован: 15.05.2005
Сообщения: 1502
Откуда: localhost
|
|
|
Цитата |
|
WParam = VK_F1 // нажали F1
WParam = VK_RETURN // нажали Enter
WParam = Ord('F') // нажали латинскую заглавную букву F
WParam = Ord('Ф') // нажали русскую заглавную букву Ф
по-моему так. _________________ Пойду посплю перед сном. |
|
| В начало |
|
 |
|
|
| В начало |
|
 |
|