Форум: "WinAPI";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];
Внизkeys Найти похожие ветки
← →
race1 (2004-07-25 13:27) [0]как "правильнее" обрабатывать нажатия клавиш клавиатуры? если ловить wm_keydown\up, они не покажут, например, что нажата кнопка alt (одна, без сочетания), почему-то для некоторых F неработает (F9-F11). ну и хотелось бы больше контроля на клавиатурой, что бы без особых усилий определять нажатия навороченных комбинаций вроде alt+r, ctrl+alt+shift+F5
ещё бы хотелось преобразования кодов клавиш в их название
да, всё на winapi
← →
VMcL © (2004-07-25 14:02) [1]>>race1 (25.07.04 13:27)
Локальный хук подойдёт?
← →
grom (2004-07-25 18:27) [2]может это подойдет
var
HookHandle: hHook;
function HookProc(Code: integer; WParam: word; LParam: Longint): Longint; stdcall;
var
msg: PEVENTMSG;
key: integer;
begin
if Code >= 0 then begin
result := 0;
msg := Pointer(LParam);
with Form1 do
case msg.message of
WM_MOUSEMOVE: Caption := IntToStr(msg.ParamL) + #32 + IntToStr(msg.ParamH);
WM_LBUTTONDOWN: CheckBox1.Checked := true;
WM_LBUTTONUP: CheckBox1.Checked := false;
WM_RBUTTONDOWN: CheckBox2.Checked := true;
WM_RBUTTONUP: CheckBox2.Checked := false;
WM_KEYUP: CheckBox3.Checked := false;
WM_KEYDOWN: begin
CheckBox3.Checked := true;
key := msg.paramL and 255;
if key in [48..57, 65..90]
then Edit1.Text := Edit1.Text + chr(key);
end;
end;
end else
result := CallNextHookEx(HookHandle, code, WParam, LParam);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
CheckBox1.Caption := "left button";
CheckBox2.Caption := "right button";
CheckBox3.Caption := "keyboard";
HookHandle := SetWindowsHookEx(WH_JOURNALRECORD, @HookProc, HInstance, 0);
Edit1.Text := "";
Edit1.Enabled := false;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
if HookHandle > 0 then
UnhookWindowsHookEx(HookHandle);
end;
← →
race1 (2004-07-26 08:09) [3]значит хуки, если они дают полный контроль над клавой :)
← →
VMcL © (2004-07-26 11:18) [4]>>race1 (26.07.04 08:09) [3]
Более менее полный контроль даёт драйвер.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.027 c