Установил хук:
HookHandle := SetWindowsHookEx(wh_Keyboard, @Key_Hook, hInstance, 0);
При нажатии клавиш вызывается функция
function Key_Hook(Code: integer; wParam: word;
lParam: Longint): Longint; stdcall; export;
if (Code >= 0) then
begin
case wParam of
VK_SHIFT: messageboxa(0,'VK_SHIFT','',0);
ord('A'): messageboxa(0,'A','',0);
end;
.........
Таким образом я могу отловить нажатие клавиш Shift или "A". А как мне отловить одновременное нажатие этих клавишь (Shift+A)?
И как тут отловить события WM_KEYDOWN, WM_KEYUP?
C>>И как тут отловить события WM_KEYDOWN, WM_KEYUP?
А>смотреть на старший бит lParam. 0 — нажатие, 1 — отпускание.
За GetAsyncKeyState пасиба.
А вот про старший бит чето не совсем понял
lparam: word. Т.е. старший бит в двоичном представлении 1000000000000000, что в десятичном 32768.
Вычисляю старший бит (lparam and 32768):
if (wparam =vk_f10) then
messageboxa(0,'key f10',pchar(inttostr(((lparam and 32768)))),0);
Почемуто оба раза кажет что старший бит равен нулю.