Windows Hook zu Winamp
-
Hallo zusammen,
ich versuche fieberhaft einen Windows Hook in Winamp einzuklinken, um in meiner Applikationen die Winamp Messages zu empfangen, bekomme es aber einfach nicht hin. Meine Callback Funktion wird nie aufgerufen.
(Das PostMessage könnt ihr erstmal vergessen; hatte eine MessageBox eingebaut; anstatt von WH_CALLWNDPROC hatte ich auch schon WH_CALLWNDPROCRET und WH_GETMESSAGE eingebaut. bei den ersten beiden ist nichts passiert, bei GetMessage hat sich in der Winamp GUI nichts mehr getan, bis ich meine Applikation geschlossen hab, die Callback-Funktion wurde trotzdem nicht aufgerufen.)
Hier mein Code, er befindet sich in einer dll, die eigentliche Applikationen in einem anderen Projekt:
HHOOK hWinampHook = NULL; HANDLE hInstance; HWND hTargetWnd = NULL; BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch( ul_reason_for_call ) { case DLL_PROCESS_ATTACH: hInstance = (HINSTANCE)hModule; break; case DLL_THREAD_ATTACH: break; case DLL_PROCESS_DETACH: break; case DLL_THREAD_DETACH: break; } return TRUE; } LRESULT CALLBACK HookWinampWnd( int nCode, // handle to window WPARAM wParam, // first message parameter LPARAM lParam // second message parameter ) { PostMessage(hTargetWnd, WM_WINAMP, NULL, NULL); // pass to next hook return CallNextHookEx(NULL, nCode, wParam, lParam); } void SetHook(HWND hMainWnd) { hTargetWnd = hMainWnd; // get winamp handle HWND hwndWinamp = ::FindWindow("Winamp v1.x",0); if(hwndWinamp == NULL) { return; } DWORD dwWAThreadId = GetWindowThreadProcessId( hwndWinamp, NULL ); hWinampHook = SetWindowsHookEx( WH_CALLWNDPROC, (HOOKPROC) HookWinampWnd, (HINSTANCE)hInstance, dwWAThreadId); }Wäre super wenn hier jemand einen Fehler entdeckt.
Danke und schönen Gruß
MrFlow