2013-02-27 42 views
0

我想攔截其他進程chatBox的WM_PAINT消息。 函數:GetMessage(msg,hwnd,0,0)似乎是完美的,但我沒有收到任何消息(我嘗試作爲超級用戶) 從現在我的C++代碼找到好的子窗口並嘗試「getMessage」 , 我忘了什麼?我必須將這些代碼注入到我的其他進程的DLL中?WM_PAINT遠程進程

+0

你真的是指「遠程」,或者它只是同一臺計算機上的另一個進程嗎? – 2013-02-27 10:49:51

+0

是在同一臺計算機上對不起 – gfauchart 2013-02-27 11:01:38

回答

3

消息隊列是每個線程,所以你不能GetMessage爲其他線程或進程。

你需要的是安裝一個窗口鉤子。請參閱SetWindowsHookEx和WH_CALLWNDPROC掛鉤類型。你的DLL將被加載到所有進程並攔截所有窗口消息。

然後確定您需要忽略哪些消息/進程/窗口以及要處理哪些消息。

+0

感謝,但也有一些是我做錯了, /* h是whanted窗口*/ GetWindowThreadProcessId(H,&pid); 的HWND如果(!和SetWindowsHookEx(WH_CALLWNDPROC,(HOOKPROC)CallWndProc, NULL,pid)) std :: cout <<「failed」<< std :: endl; 這以失敗 – gfauchart 2013-02-27 11:23:06

+0

結束您需要將您的CallWndProc移動到單獨的DLL並將一個DLL句柄傳遞給SetWindowsHookEx函數。 – 2013-02-27 11:41:06