From 5386526f58c6d4846e4dfa968b697315312e8fee Mon Sep 17 00:00:00 2001 From: casey langen Date: Fri, 18 Nov 2016 23:39:01 -0800 Subject: [PATCH] Fixed global hotkey handling to actually work. --- .../win32globalhotkeys_plugin.cpp | 33 ++++++++++--------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/src/contrib/win32globalhotkeys/win32globalhotkeys_plugin.cpp b/src/contrib/win32globalhotkeys/win32globalhotkeys_plugin.cpp index ada816567..119733e62 100644 --- a/src/contrib/win32globalhotkeys/win32globalhotkeys_plugin.cpp +++ b/src/contrib/win32globalhotkeys/win32globalhotkeys_plugin.cpp @@ -42,20 +42,23 @@ musik::core::sdk::IPlaybackService* playback; static HHOOK hook = NULL; LRESULT CALLBACK ShellProc(int code, WPARAM wParam, LPARAM lParam) { - if (code == HSHELL_APPCOMMAND && playback) { - switch (GET_APPCOMMAND_LPARAM(lParam)) { - case APPCOMMAND_MEDIA_NEXTTRACK: - playback->Next(); - return 0; - case APPCOMMAND_MEDIA_PLAY_PAUSE: - playback->PauseOrResume(); - return 0; - case APPCOMMAND_MEDIA_PREVIOUSTRACK: - playback->Previous(); - return 0; - case APPCOMMAND_MEDIA_STOP: - playback->Stop(); - return 0; + if (code == HC_ACTION && playback) { + if (wParam == WM_KEYDOWN) { + PKBDLLHOOKSTRUCT p = (PKBDLLHOOKSTRUCT)lParam; + switch (p->vkCode) { + case VK_MEDIA_NEXT_TRACK: + playback->Next(); + return 0; + case VK_MEDIA_PLAY_PAUSE: + playback->PauseOrResume(); + return 0; + case VK_MEDIA_PREV_TRACK: + playback->Previous(); + return 0; + case VK_MEDIA_STOP: + playback->Stop(); + return 0; + } } } @@ -65,7 +68,7 @@ LRESULT CALLBACK ShellProc(int code, WPARAM wParam, LPARAM lParam) { BOOL APIENTRY DllMain(HMODULE module, DWORD reason, LPVOID reserved) { switch (reason) { case DLL_PROCESS_ATTACH: - hook = SetWindowsHookEx(WH_SHELL, (HOOKPROC) ShellProc, module, 0L); + hook = SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC) ShellProc, module, 0L); break; case DLL_PROCESS_DETACH: