keybd_event 函数 (winuser.h)

合成键击。 系统可以使用这种合成的击键来生成 WM_KEYUPWM_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

与键笔划关联的附加值。

返回值

备注

应用程序可以模拟按下 PRINTSCRN 键以获取屏幕快照并将其保存到剪贴板。 为此,请调用 keybd_event ,并将 bVk 参数设置为 VK_SNAPSHOT

示例

以下示例程序使用 keybd_event VK_NUMLOCK 虚拟键切换 NUM LOCK 指示灯。 它采用一个布尔值,该值指示是应关闭灯 (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
标头 winuser.h (包括 Windows.h)
Library User32.lib
DLL User32.dll

另请参阅