سؤال

ولقد كنت قادرا على تعيين مفاتيح الاختصار المحلية مثل هذا

 RegisterHotKey(hwndDlg, 100, MOD_ALT | MOD_CONTROL, 'S');

وكيف يمكنني تعيين هوتكي إلى أن تكون عالمية؟ أريد أن يكون هناك حتى عند نافذتي مخفيا.

هل كانت مفيدة؟

المحلول

وأنا حلها نفسي ولكن شكرا لردكم وهنا ما هو الخطأ ...

ShowWindow(hwndDlg, SW_HIDE);
RegisterHotKey(hwndDlg, 100, MOD_ALT | MOD_CONTROL, 'S');

وإذا قمت بتسجيل مفتاح التشغيل السريع أولا ثم إخفاء إطار ... أنه يتجاهل هوتكي لسبب ما ... حسنا .. انها تعمل الآن:)

نصائح أخرى

HTTP: // MSDN .microsoft.com / RU-RU / مكتبة / ويندوز / المكتبي / ms646309 (ت = vs.85) .aspx اتصال

<اقتباس فقرة>   

وhWnd عنصر [في، اختياري]

     

ونوع: HWND

     

<...> إذا كانت هذه المعلمة فارغة، وتنشر رسائل WM_HOTKEY ل   قائمة انتظار الرسائل من موضوع الدعوة، ويجب أن تتم معالجتها في   حلقة رسالة.

وهذا هو أفضل وسيلة لتسجيل مفاتيح الاختصار العالمية.

لا يهم إذا نافذتك مرئيا أم لا. يجب أن لا تستخدم hWnd عنصر كنت تخطط لتدمير (مثل الحوار). إنشاء منفصل (غير مرئية) نافذة إذا كان لديك أي إطار آخر مناسب.

أولا عليك تحديد واحد أو أكثر من الثوابت لمفاتيح الاختصار الخاص بك

#define HOTKEY1 1000
#define HOTKEY2 1002

وبعد ذلك قمت بتسجيل هذه المفاتيح الساخنة

RegisterHotKey(NULL, HOTKEY1, MOD_ALT + MOD_SHIFT, 0x53); // ALT+SHIFT+s
RegisterHotKey(NULL, HOTKEY2, MOD_ALT + MOD_SHIFT, 0x51); // ALT+SHIFT+q

وأخيرا في الحدث الرئيسي تبدو لك مراقبة هذه المفاتيح الساخنة والرد عليها:

         if (msg.message == HOTKEY1)
         {
             switch (LOWORD(msg.wParam))
             {
             case HOTKEY1:
                 // do such and such
                 break;
             case HOTKEY2:
                 // do such and such
                 break
             }
         }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top