Функция keybd_event 

Функция 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, GetKeyStateMapVirtualKey, 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

Нет

Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz