From 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d Mon Sep 17 00:00:00 2001 From: Jef Date: Tue, 24 Sep 2024 14:54:57 +0200 Subject: Initial community commit --- Src/Plugins/Input/in_wmvdrm/StatusHook.cpp | 54 ++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 Src/Plugins/Input/in_wmvdrm/StatusHook.cpp (limited to 'Src/Plugins/Input/in_wmvdrm/StatusHook.cpp') diff --git a/Src/Plugins/Input/in_wmvdrm/StatusHook.cpp b/Src/Plugins/Input/in_wmvdrm/StatusHook.cpp new file mode 100644 index 00000000..45cf618a --- /dev/null +++ b/Src/Plugins/Input/in_wmvdrm/StatusHook.cpp @@ -0,0 +1,54 @@ +#if 0 +#include +#include "../Winamp/wa_ipc.h" +#include "Main.h" +#include + +static WNDPROC waProc=0; +static bool winampisUnicode=false; + +static LRESULT WINAPI StatusHookProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) +{ + + if (msg == WM_WA_IPC && lParam == IPC_HOOK_TITLESW) + { + LRESULT downTheLine = winampisUnicode?CallWindowProcW(waProc, hwnd, msg, wParam, lParam):CallWindowProcA(waProc, hwnd, msg, wParam, lParam); + waHookTitleStructW *hook = (waHookTitleStructW *)wParam; + if (!PathIsURLW(hook->filename) && winamp.GetStatusHook(hook->title, 2048, hook->filename)) + { + return TRUE; + } + else + return downTheLine; + } + + if (waProc) + { + if (winampisUnicode) + return CallWindowProcW(waProc, hwnd, msg, wParam, lParam); + else + return CallWindowProcA(waProc, hwnd, msg, wParam, lParam); + } + else + return DefWindowProc(hwnd, msg, wParam, lParam); +} + +void Hook(HWND winamp) +{ + if (winamp) + { + winampisUnicode = !!IsWindowUnicode(winamp); + if (winampisUnicode) + waProc = (WNDPROC)SetWindowLongPtrW(winamp, GWLP_WNDPROC, (LONG_PTR)StatusHookProc); + else + waProc = (WNDPROC)SetWindowLongPtrA(winamp, GWLP_WNDPROC, (LONG_PTR)StatusHookProc); + } +} + +void Unhook(HWND winamp) +{ +// if (winamp && GetWindowLongA(winamp,GWL_WNDPROC) == (LONG)StatusHookProc) + //SetWindowLong(winamp, GWL_WNDPROC, (LONG)waProc); + //waProc=0; +} +#endif \ No newline at end of file -- cgit