Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
GetAsyncKeyState определяет, нажата ли клавиша на момент вызова и были нажата клавиша после предыдущего вызова функции.
В случае ошибки (текущий поток не имеет фокус ввода) функция возвращает 0. В успешном случае функция возвращает бит состояния клавиши.
VK_LSHIFT = &HA0 | Левый Shift |
VK_RSHIFT = &HA1 | Правый Shift |
VK_LCONTROL = &HA2 | Левый Ctrl |
VK_RCONTROL = &HA3 | Правый Ctrl |
VK_LMENU = &HA4 | Левый Alt |
VK_RMENU = &HA5 | Правый Alt |
' Определим, была ли нажата клавиша Q ' после предыдущего вызова функции Dim retval As Integer ' Получаем состояние клавиши Q retval = GetAsyncKeyState(VK_Q) ' Проверяем бит &H1 If (retval And &H1) = &H1 Then Debug.Print "Клавиша Q была нажата при предыдущем вызове GetAsyncKeyState" Else Debug.Print "Клавиша Q не была нажата при предыдущем вызове GetAsyncKeyState" End If