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