Ringkasan
Dokumentasi untuk SetKeyboardState () dengan benar mengatakan bahwa Anda tidak bisa menggunakan API ini untuk mengganti tombol NUM LOCK, CAPS LOCK, dan SCROLL LOCK. Anda bisa menggunakan keybd_event () untuk mengalihkan NUM LOCK, CAPS LOCK, dan tombol gulir kunci di bawah Windows NT. Teknik yang sama berfungsi untuk mengubah Caps Lock dan scroll Lock di bawah Windows 95, tetapi tidak akan berfungsi untuk num Lock.
Informasi Selengkapnya
Program contoh berikut ini menonaktifkan lampu NUM LOCK jika dimatikan. Fungsi SetNumLock yang ditentukan di sini mensimulasikan menekan tombol NUM LOCK, menggunakan keybd_event () dengan kunci virtual VK_NUMLOCK. Diperlukan nilai Boolean yang mengindikasikan apakah lampu harus dimatikan (FALSE) atau aktif (TRUE). Teknik yang sama dapat digunakan untuk tombol CAPS LOCK (VK_CAPITAL) dan tombol gulir LOCK (VK_SCROLL).
Kode sampel
/* 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 ); }