Функция keybd_event синтезирует нажатие клавиши. Система может использовать такое синтезируемое нажатие клавиши, чтобы создать сообщение WM_KEYUP или WM_KEYDOWN. Вызывает функцию keybd_event программа обработки прерываний драйвера клавиатуры.
Windows NT/2000/XP: Эта функция была заменена. Используйте SendInput вместо нее.
Синтаксис
VOID keybd_event( BYTE bVk, BYTE bScan, DWORD dwFlags, PTR dwExtraInfo ); |
Параметры
bVk
[in] Определяет код виртуальной клавиши. Код должен быть значением в диапазоне от 1 до 254. Полный список см. в статье Коды виртуальных клавиш.bScan
Этот параметр не используется.
dwFlags
[in] Определяет различные виды операций функции. Этот параметр может состоять из одного или нескольких ниже следующих значений.
Флажок |
Предназначение |
KEYEVENTF_EXTENDEDKEY |
Если он установлен, скэн-коду предшествует префиксный байт, имеющий значение 0xE0 (224). |
KEYEVENTF_KEYUP |
Если он установлен, клавиша была отпущена. Если не установлен, клавиша была нажата. |
dwExtraInfo
[in] Определяет дополнительное значение, связанное с нажатием клавиши.Возвращаемые значения
У этой функции нет возвращаемых значений.
Замечания
Прикладная программа может смоделировать нажатие клавиши PrintScreen, чтобы получить снимок экрана и сохранить его в буфере обмена. Чтобы сделать это, вызовите keybd_event с установленным параметром bVk в VK_SNAPSHOT.
Windows NT/2000/XP: Функция keybd_event может переключить клавиши NUM LOCK, CAPS LOCK и SCROLL LOCK.
Windows 95/98/Me: Функция keybd_event может переключить только клавиши CAPS LOCK и SCROLL LOCK. Она не может переключить клавишу NUM LOCK.
Ниже следующее типовая программа переключает индикатор NUM LOCK, используя функцию keybd_event () виртуальной клавишей VK_NUMLOCK. Требуется Булево значение, которое указывает, должен ли индикатор быть выключен - (ЛОЖЬ (FALSE)) или включен - (ИСТИНА (TRUE)). Та же самая методика может использоваться для клавиши CAPS LOCK (VK_CAPITAL) и клавиши SCROLL LOCK (VK_SCROLL).
Демонстрационный пример
#include <windows.h> void SetNumLock( BOOL bState ) { BYTE keyState[256]; GetKeyboardState((LPBYTE)&keyState);if( (bState && !(keyState[VK_NUMLOCK] & 1)) ||(!bState && (keyState[VK_NUMLOCK] & 1)) ){// Моделируем нажатие клавишиkeybd_event( VK_NUMLOCK, 0x45, KEYEVENTF_EXTENDEDKEY |0, 0 );// Моделируем возврат клавиши в не нажатое состояниеkeybd_event( VK_NUMLOCK, 0x45, KEYEVENTF_EXTENDEDKEY |KEYEVENTF_KEYUP, 0);}}void main(){SetNumLock( TRUE );}
|
Смотри также
Обзор Ввод данных с клавиатуры, GetAsyncKeyState, GetKeyState, MapVirtualKey, SetKeyboardState
Размещение и совместимость keybd_event |
|
Windows. NET Server |
Да |
Windows XP |
Да |
Windows 2000 |
Да |
Windows NT |
Да версии 3.1 и выше |
Windows Me |
Да |
Windows 98 |
Да |
Windows 95 |
Да |
Используемая библиотека |
User32.lib |
Заголовочный файл |
|
- объявлено в |
Winuser.h |
- включено в |
Windows.h |
Unicode |
Нет |
Замечания по платформе |
Не имеется |