Я пытаюсь использовать GetAsyncKeyState для захвата произвольной двухтактной альфа-последовательности клавиш в PowerPoint, например, «AA», «AB», «DZ».Однако я обнаружил, что первое нажатие клавиши фиксируется как первое и второе.
Для простоты приведенный ниже код пытается захватить только последовательность «AA».Я ожидаю, что код завершится после того, как «A» будет нажата дважды.Тем не менее, он завершается, как только один раз нажимается «A».
Option Explicit
Private Declare PtrSafe Function GetAsyncKeyState Lib "user32" _
(ByVal vKey As Long) As Integer
Private Const VK_A = &H41 'A key
Sub CaptureAA()
' Capture first 'A' keystroke
Do While True
If GetAsyncKeyState(VK_A) Then
Debug.Print "First A captured"
Exit Do
End If
DoEvents
Loop
' Capture second 'A' keystroke
Do While True
If GetAsyncKeyState(VK_A) Then
Debug.Print "Second A captured"
Exit Do
End If
DoEvents
Loop
End Sub
Я предполагаю, что мне нужно как-то отменить нажатие клавиши после первого GetAsyncKeyState, но я не уверен, правильно ли этоили как это сделать.