Hook will nicht :(
-
Hallo,
ich hab einen Hook geschrieben der nicht das macht was er soll. Ist auch mein erster Versuch mit Hooks. Was ich erreichen möchte ist, das eine MessageBox angezeigt wird, sobald ein IE-Fenster geöffnet wird.
Hier nun meine bisherigen Ergebnisse:hook.cpp
//--------------------------------------------------------------------------- #include <windows.h> #pragma hdrstop #define WM_BROWSERHOOK WM_USER + 101 //--------------------------------------------------------------------------- extern "C" __declspec(dllexport) void SetHook(HWND); extern "C" __declspec(dllexport) void RemoveHook(void); LRESULT CALLBACK BrowserHookProc(int nCode, WPARAM wParam, LPARAM lParam); //--------------------------------------------------------------------------- HHOOK ghHook = NULL; HINSTANCE ghInst; HWND myhWnd; //--------------------------------------------------------------------------- int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved) { ghInst = hinst; return 1; } //--------------------------------------------------------------------------- void SetHook(HWND hWnd) { myhWnd = hWnd; if(!ghHook) { ghHook = SetWindowsHookEx(WH_CALLWNDPROC, (HOOKPROC)BrowserHookProc, ghInst, 0); if(!ghHook) { MessageBox(NULL,"Hook kann nicht erstellt werden", "FEHLER", MB_OK | MB_ICONERROR); } } else { MessageBox(NULL, "Hook ist bereits erstellt", "Browser Window Hook", MB_OK); } } //--------------------------------------------------------------------------- void RemoveHook(void) { UnhookWindowsHookEx(ghHook); } //--------------------------------------------------------------------------- LRESULT CALLBACK BrowserHookProc(int nCode, WPARAM wParam, LPARAM lParam) { if(nCode == HC_ACTION) { CWPSTRUCT *cwp = (CWPSTRUCT*)lParam; HWND hWndIE = FindWindow("IEFrame", NULL); if((cwp->message == WM_CREATE) && (cwp->hwnd == hWndIE)) { hWndBrowser = hWndIE; SendMessage(myhWnd, WM_BROWSERHOOK, wParam, lParam); } } return CallNextHookEx(ghHook, nCode, wParam, lParam); } //---------------------------------------------------------------------------Die Message WM_BROWSERHOOK wird nicht gesendet. Wenn ich allerdings die if Abfrage in der Callback Funktion ändere (z.Bsp. if(cwp->message == WM_CREATE)) dann wird die Message gesendet. Ich möchte aber nur benachrichtigt werden, wenn ein IE-Fenster geöffnet wird. Ich habe keine Ahnung was ich falsch gemacht habe. Ist ja, wie schon gesagt, mein erster Versuch im Umgang mit Hooks.
Ich bin für jede Hilfe dakbar.Mfg
MORL
-
Hat sich soeben erledigt. Das Handle myhWnd konnte nicht gesetzt sein. Die Nachricht wurde also nicht an mein Programm gesendet.