Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Определяет, находится ли ключ вверх или вниз во время вызова функции, и указывает, нажимается ли ключ с момента предыдущего вызова GetAsyncKeyState.
Синтаксис
SHORT GetAsyncKeyState(
[in] int vKey
);
Параметры
[in] vKey
Тип: int
Код виртуального ключа. Дополнительные сведения см. в разделе "Коды виртуальных ключей".
Для указания определенных ключей можно использовать константы слева и справа. Дополнительные сведения см. в разделе "Примечания".
Возвращаемое значение
Тип: SHORT
Если указанный ключ в данный момент отключен, задается наиболее значительный бит возвращаемого значения. Так как наиболее значимым битом является бит знака, отрицательное значение указывает на то, что ключ в настоящее время вниз.
Для обратной совместимости задается наименьший бит, если указанный ключ был нажат с момента последнего предыдущего вызова в сеансе к GetAsyncKeyState для этого ключа, но значение является ненадежным. (См. примечания.)
Все остальные биты результата зарезервированы и должны игнорироваться.
Возвращаемое значение равно нулю, если вызов завершается ошибкой. Причины сбоя:
- Текущий рабочий стол не является активным рабочим столом.
- Изоляция привилегий пользовательского интерфейса (UIPI) запрещает вызову потока доступа к потоку переднего плана.
- Поток переднего плана принадлежит другому процессу, и вызывающий поток не имеет DESKTOP_HOOKCONTROL или DESKTOP_JOURNALRECORD доступ к рабочему столу.
Замечания
Функция GetAsyncKeyState работает с кнопками мыши. Однако он проверяет состояние физических кнопок мыши, а не на логических кнопках мыши, с которыми сопоставлены физические кнопки. Например, вызов GetAsyncKeyState(VK_LBUTTON) всегда возвращает состояние левой физической кнопки мыши независимо от того, сопоставляется ли она с левой или правой логической кнопкой мыши. Вы можете определить текущее сопоставление физических кнопок мыши с логическими кнопками мыши, вызвав GetSystemMetrics(SM_SWAPBUTTON)значение TRUE, если кнопки мыши были переключены.
Хотя наименьший значительный бит возвращаемого значения указывает, нажимается ли ключ с момента последнего запроса, из-за предупреждающего многозадачности Windows другой приложение может вызывать GetAsyncKeyState и получать бит "недавно нажаты" вместо приложения. Поведение наименьшего значительного значения возвращаемого значения сохраняется для совместимости с 16-разрядными приложениями Windows (которые не являются предварительными) и не должны полагаться на них, так как они могут сообщать о ложных отрицательных данных.
Константы кода виртуального ключа можно использовать VK_SHIFT, VK_CONTROL и VK_MENU в качестве значений для параметра vKey . Это дает состояние клавиш SHIFT, CTRL или ALT без различия между левым и правым.
В качестве значений vKey можно использовать следующие константы кода виртуального ключа, чтобы различать экземпляры этих ключей слева и справа.
| Code | Meaning |
|---|---|
| VK_LSHIFT | Клавиша shift влево. |
| VK_RSHIFT | Клавиша shift вправо. |
| VK_LCONTROL | Клавиша левого элемента управления. |
| VK_RCONTROL | Клавиша правого элемента управления. |
| VK_LMENU | Клавиша левого меню. |
| VK_RMENU | Клавиша правого меню. |
Эти константы слева и справа доступны только при вызове функций GetKeyboardState, SetKeyboardState, GetAsyncKeyState, GetKeyState и MapVirtualKey.
Example
int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, PSTR cmdline, int cmdshow)
{
BOOL considerSafeMode = FALSE;
// If the user holds the CTRL key while the app is launching,
// then offer to enter Safe Mode.
if (GetAsyncKeyState(VK_CONTROL) < 0)
{
considerSafeMode = TRUE;
}
...
}
Требования
| Требование | Ценность |
|---|---|
| Минимальный поддерживаемый клиент | Windows 2000 Профессиональный [только классические приложения] |
| минимальный поддерживаемый сервер | Windows 2000 Server [только классические приложения] |
| целевая платформа | Виндоус |
| Header | winuser.h (включая Windows.h) |
| Library | User32.lib |
| DLL | User32.dll |