Поделиться через


функция keybd_event (winuser.h)

Синтезирует нажатие клавиши. Система может использовать такой синтезированный нажатие клавиши для создания WM_KEYUP или WM_KEYDOWN сообщения. Обработчик прерываний драйвера клавиатуры вызывает функцию keybd_event .

Примечание Эта функция заменена. Вместо этого используйте SendInput .
 

Синтаксис

void keybd_event(
  [in] BYTE      bVk,
  [in] BYTE      bScan,
  [in] DWORD     dwFlags,
  [in] ULONG_PTR dwExtraInfo
);

Параметры

[in] bVk

Тип: BYTE

Код виртуального ключа. Код должен быть значением в диапазоне от 1 до 254. Полный список см. в разделе Коды виртуальных ключей.

[in] bScan

Тип: BYTE

Код аппаратного сканирования ключа.

[in] dwFlags

Тип: DWORD

Управляет различными аспектами работы функции. Этот параметр может быть одним или несколькими из следующих значений.

Значение Значение
KEYEVENTF_EXTENDEDKEY
0x0001
Если этот параметр указан, коду сканирования предшествовал байт префикса со значением 0xE0 (224).
KEYEVENTF_KEYUP
0x0002
Если этот параметр указан, ключ освобождается. Если этот параметр не указан, ключ будет удручен.

[in] dwExtraInfo

Тип: ULONG_PTR

Дополнительное значение, связанное с росчерком клавиши.

Возвращаемое значение

None

Remarks

Приложение может имитировать нажатие клавиши PRINTSCRN, чтобы получить snapshot экрана и сохранить его в буфер обмена. Для этого вызовите keybd_event с параметром bVk , равным VK_SNAPSHOT.

Примеры

Следующий пример программы переключает свет 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)) )
      {
      // Simulate a key press
         keybd_event( VK_NUMLOCK,
                      0x45,
                      KEYEVENTF_EXTENDEDKEY | 0,
                      0 );

      // Simulate a key release
         keybd_event( VK_NUMLOCK,
                      0x45,
                      KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
                      0);
      }
   }

   void main()
   {
      SetNumLock( TRUE );
   }

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header winuser.h (включая Windows.h)
Библиотека User32.lib
DLL User32.dll

См. также раздел