質問

このようにローカルホットキーを設定できました

 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 / library / windows / desktop / ms646309(v = vs.85).aspx

  

hWnd [入力、オプション]

     

タイプ:HWND

     

<!> lt; ... <!> gt;このパラメーターがNULLの場合、WM_HOTKEYメッセージは   呼び出しスレッドのメッセージキュー。   メッセージループ。

これは、グローバルホットキーを登録するためのより良い方法です。

ウィンドウが表示されているかどうかは関係ありません。破棄する予定のhWndを使用しないでください(ダイアログなど)。他に適切なウィンドウがない場合は、別個の(非表示の)ウィンドウを作成します。

まず、ホットキーの1つ以上の定数を定義します

#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