الملخص
تفيد الوثائق الخاصة ب سيتكيبواردستاتي () بشكل صحيح انه لا يمكنك استخدام واجهه برمجه التطبيقات هذه للتبديل بين المفاتيح NUM LOCK و CAPS LOCK و SCROLL LOCK. يمكنك استخدام keybd_event () لتبديل المفاتيح NUM LOCK و CAPS LOCK و SCROLL LOCK ضمن Windows NT. تعمل التقنية نفسها لتبديل المفتاح CAPS LOCK والتمرير للتامين ضمن Windows 95 ، ولكنه لن يعمل مع المفتاح NUM LOCK.
مزيد من المعلومات
يحول البرنامج النموذجي التالي الإصدار NUM LOCK عند إيقاف تشغيله. الدالة سيتنوملوك المعرفة هنا تحاكي بالضغط علي المفتاح NUM LOCK ، باستخدام keybd_event () مع مفتاح افتراضي VK_NUMLOCK. انها تاخذ قيمه منطقيه تشير إلى ما إذا كان يجب إيقاف تشغيل الضوء (FALSE) أو تشغيل (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 ); }