Bereiche für Child Windows begrenzen
-
Ich möchte hier einen Zwischenbericht abgeben.
Bin der Sache schon näher gekommen. Ich arbeite momentan mit Hook-Funktionen. Auf diese Weise kann ich Fensternachrichten eines anderen Prozesses abfangen. Hier mein Code:#include "stdafx.h" HHOOK hWndProc; BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: hWndProc = NULL; break; case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: if(hWndProc != NULL) UnhookWindowsHookEx(hWndProc); break; } return TRUE; } // Funktionsprototypen extern "C" __declspec(dllexport) int CatchWindowMessage(HWND *ptargetWnd); LRESULT WINAPI WndProc(int nCode, WPARAM wParam, LPARAM lParam); extern "C" __declspec(dllexport) int CatchWindowMessage(HWND *ptargetWnd) { DWORD targetThread = GetWindowThreadProcessId(ptargetWnd, NULL); hWndProc = SetWindowsHookEx(WH_GETMESSAGE, &WndProc, NULL, targetThread); return 0; } /**************************************************************** Hook procedure ****************************************************************/ LRESULT WINAPI WndProc(int nCode, WPARAM wParam, LPARAM lParam) { MSG *msg = (MSG*)lParam; if (nCode < 0) // do not process message return CallNextHookEx(hWndProc, nCode, wParam, lParam); switch (nCode) { case HC_ACTION: switch(msg->message) { case WM_RBUTTONDOWN: MessageBox(NULL, "Right mouse button down", "WM Info", MB_OK); break; case WM_MOUSEMOVE: // Wird hineingesprungen [X] break; case WM_MOVING: MessageBox(NULL, "Wnd moved", "WM Info", MB_OK); } break; default: break; } return CallNextHookEx(hWndProc, nCode, wParam, lParam); }Einen Mouseklick, sowie das Maus über das Fenster hinwegbewegen bekomme ich als Message abgefangen. Aber die Nachricht WM_MOVING komischerweise nicht. Hat jemand eine Erklärung? In der Onlinehilfe steht leider nicht welche NAchrichten mit der Hook-Funktion abgefangen werden können.
Danke
