摘要

SetKeyboardState ()的文档中正确指出,您无法使用此 API 来切换 NUM LOCK、CAPS LOCK 和 SCROLL LOCK 键。你可以使用 keybd_event ()在 Windows NT 下切换 NUM LOCK、CAPS LOCK 和 SCROLL LOCK 键。 相同的技术可用于在 Windows 95 下切换 CAPS LOCK 和滚动锁,但它不会对 NUM LOCK 有效。

更多信息

下面的示例程序将在 NUM LOCK 灯关闭时将其打开。 此处定义的 SetNumLock 函数模拟按 NUM LOCK 键,使用 keybd_event ()和 VK_NUMLOCK 的虚拟键。 它采用一个布尔值,用于指示是否应关闭光(FALSE)或 on (TRUE)。相同的技术可用于 CAPS LOCK 键(VK_CAPITAL)和滚动锁定键(VK_SCROLL)。

示例代码

   /* Compile options needed:   */    #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 );   }

需要更多帮助?

扩展你的技能
了解培训
抢先获得新功能
加入 Microsoft 内部人员

此信息是否有帮助?

你对翻译质量的满意程度如何?
哪些因素影响了你的体验?

谢谢您的反馈意见!

×