Σύνοψη
Η τεκμηρίωση για το SetKeyboardState () σωστά αναφέρει ότι δεν μπορείτε να χρησιμοποιήσετε αυτό το API για να αλλάξετε τα πλήκτρα NUM LOCK, CAPS LOCK και SCROLL LOCK. Μπορείτε να χρησιμοποιήσετε το keybd_event () για να αλλάξετε τα πλήκτρα NUM LOCK, CAPS LOCK και SCROLL LOCK στα Windows NT. Η ίδια τεχνική λειτουργεί για την εναλλαγή CAPS LOCK και SCROLL LOCK στην περιοχή Windows 95, αλλά δεν θα λειτουργήσει για το πλήκτρο NUM LOCK.
Περισσότερες πληροφορίες
Το παρακάτω δείγμα προγράμματος μετατρέπει το πλήκτρο NUM LOCK αναμμένο εάν είναι απενεργοποιημένο. Η συνάρτηση SetNumLock που ορίζεται εδώ προσομοιώνει το πάτημα του πλήκτρου NUM LOCK, χρησιμοποιώντας το keybd_event () με ένα εικονικό κλειδί VK_NUMLOCK. Χρειάζεται μια δυαδική τιμή που υποδεικνύει εάν το φως πρέπει να είναι απενεργοποιημένο (FALSE) ή ενεργοποιημένο (TRUE). Η ίδια τεχνική μπορεί να χρησιμοποιηθεί για το πλήκτρο CAPS LOCK (VK_CAPITAL) και το πλήκτρο SCROLL LOCK (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 ); }