aboutsummaryrefslogtreecommitdiff
path: root/Src/Plugins/Input/in_wmvdrm/StatusHook.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Src/Plugins/Input/in_wmvdrm/StatusHook.cpp')
-rw-r--r--Src/Plugins/Input/in_wmvdrm/StatusHook.cpp54
1 files changed, 54 insertions, 0 deletions
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 <windows.h>
+#include "../Winamp/wa_ipc.h"
+#include "Main.h"
+#include <shlwapi.h>
+
+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