Как нажать две клавиши, чтобы они работали одновременно.

  • Автор темы Myc0n
  • Дата начала
M

Myc0n

Когда я нажимаю две клавиши одновременно, работает только одна из них.
Я написал:[codebox]procedure TForm1.FormKeyDown2(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=37 then a:=a-2;
if key=38 then b:=b-2;
if key=39 then a:=a+2;
if key=40 then b:=b+2;
end;[/codebox]
Но как сделать так, чтобы можно было нажимать больше одной клавиши, и все работали одновременно?
 
P

Poseidon

А не получится! Windows корректно может отловить нажатие "буквенной" клавиши с какой-нибудь функциональной (Shift, Alt и т.п.). Нажатие одновременно двух буквенных клавиш невозможно отловить стандартными способами ввиду того, что при нажатии каждой из клавишь Windows посылает WM_KeyDown каждый раз и не смотрит, нажата при этом еще какая-то клавиша или нет (кроме упомянутых функциональных). А вообще, какие комбинации нужно отловить?
 
E

etc

Почемуц бы не воспользоваться шорткатами?
 

Kmet

Well-known member
25.05.2006
904
8
BIT
0
обрабатывать WM_KEYDOWN, WM_KEYUP и следить ручками.
вариант два на каждый keydown делать GetKeyboardState и его анализировать
 
M

Myc0n

А можете показать, как это все применить? Уж извините, что я такой чайник.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!