CTRL+SHIFT+UP
ウィンドウがフォーカスされていない/アクティブでない場合でも、WinAPIでキーの組み合わせ()を処理する必要があります。
どうすればこれを行うことができますか(可能であれば、WinApiフックを使用しないソリューションをお勧めします)?
まず、「システム全体」のホットキーをRegisterHotKey関数に登録する必要があります。アプリケーションが最小化されている、フォーカスされていない、または非表示になっている場合でも機能します。
RegisterHotKey(hWnd, KEY_ID, MOD_CONTROL | MOD_SHIFT, VK_UP);
// check for errors, the function will fail if the hot key is already registered
hWnd
WM_HOTKEYメッセージを受信するウィンドウのハンドルです。KEY_ID
ホットキーの識別子です。MOD_CONTROL | MOD_SHIFT
Ctrl+Shiftの両方。VK_UP
上矢印キーの場合。
次に、ウィンドウプロシージャでWM_HOTKEYメッセージを処理する必要があります。
LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
switch (uMsg) {
...
WM_HOTKEY:
// handle the hot key here
...
}
}
アプリケーションにウィンドウがなく、hWnd
NULLの場合は、メッセージループでWM_HOTKEYを処理する必要があります。
MSG msg = {0};
while (GetMessage(&msg, NULL, 0, 0) != 0)
{
if (msg.message == WM_HOTKEY) {
// handle the hot key here
}
}