Tóm tắt
Tài liệu hướng dẫn dành cho SetKeyboardState () cho biết chính xác bạn không thể sử dụng API này để chuyển đổi NUM LOCK, CAPS LOCK và phím SCROLL LOCK. Bạn có thể sử dụng keybd_event () để chuyển đổi phím NUM, CAPS LOCK và SCROLL LOCK trong Windows NT. Kỹ thuật tương tự hoạt động với khóa CAPS và khóa cuộn tròn bên dưới Windows 95, nhưng nó sẽ không hoạt động cho NUM LOCK.
Thông tin Bổ sung
Chương trình mẫu sau đây sẽ chuyển ánh sáng NUM LOCK vào nếu nó bị tắt. Hàm SetNumLock được xác định ở đây mô phỏng cách nhấn phím NUM LOCK, sử dụng keybd_event () bằng khóa VK_NUMLOCK. Phải mất một giá trị boolean cho biết ánh sáng cần được tắt (FALSE) hoặc bật (TRUE). Có thể sử dụng cùng một kỹ thuật cho khóa CAPS LOCK (VK_CAPITAL) và phím SCROLL LOCK (VK_SCROLL).
Mã mẫu
/* 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 ); }