Вниз
Скачать: CL | DM;

HotKey   Найти похожие ветки 

← →
theodor_iv ©   (2003-06-08 16:35) [5]

Нет необходимости все это писать в dll, все это можно написать прямо в программе. Также нет необходимости перехватывать ВСЕ СООБЩЕНИЯ системы при помощи WH_GETMESSAGE, когда нужна только клавиатура. Нужно использовать WH_KEYBOARD.


var
Hook: HHook;

function KeyboardHook(Code: Integer; VirtualKeyCode: WParam; Info: LParam): Integer; stdcall;
var
KbdState: TKeyboardState;
Modifiers: byte;
begin
if Code < 0
then Result := CallNextHookEx(Hook, Code, VirtualKeyCode, Info)
else begin
if VirtualKeyCode in [$10, $11, $12, $5B, $5C] // modifier
then begin
GetKeyboardState(KbdState);
Modifiers :=
(((KbdState[VK_LWIN] and $80) or (KbdState[VK_RWIN] and $80)) shr 4) or
((KbdState[VK_SHIFT] and $80) shr 5) or
((KbdState[VK_CONTROL] and $80) shr 6) or
((KbdState[VK_MENU] and $80) shr 7);
FrmHKEdit.Caption := IntToHex(Modifiers, 2);
end
else begin
if (Info and $80000000 <> 0) and Assigned(
then begin
FrmHKEdit.Caption := IntToHex(VirtualKeyCode, 2);
end;
end;
Result := 1;
end;
end;

procedure TFrmHKEdit.FormShow(Sender: TObject);
begin
Hook := SetWindowsHookEx(WH_KEYBOARD, @KeyboardHook, 0, GetCurrentThreadId);
end;

procedure TFrmHKEdit.FormHide(Sender: TObject);
begin
UnhookWindowsHookEx(Hook);
end;


Можно еще в обработчике события TEdit.OnKeyDown/OnKeyUp использовать функцию GetKeyboardState



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

Скачать: CL | DM;



Память: 0.44 MB
Время: 0.025 c
11-84065
blackalex
2002-10-02 11:36
2003.06.26
В динамически созданныx меню не работает OnClick


1-84167
Кот
2003-06-08 12:58
2003.06.26
картинки


6-84503
Zheka
2003-04-24 10:10
2003.06.26
GetHostByName


1-84230
DJ Vano
2003-06-13 02:25
2003.06.26
TMemo и TScrollBar


7-84797
Sam Stone
2003-04-10 20:10
2003.06.26
Работа с модемом




   Наверх