2017-05-31 63 views
1

來我有一個複雜的應用程序。有一個WM_MOUSEMOVE消息來自與最後一個WM_MOUSEMOVE相同的座標的地方。嘗試確定其中消息從

因此,我嘗試遍歷所有加載的模塊,試圖繞過(使用MS Detours 3.0)任何::PostMessageA()::PostMessageW()調用。當我這樣做時,唯一顯示爲具有這些功能的模塊是C:\WINDOWS\SYSTEM32\USER32.dll(很好!)。

我原以爲每一個模塊將有它自己的呼叫跳轉表,這就是爲什麼我認爲我可以在每個模塊爲基礎的彎路,但是這似乎並沒有這樣的情況,或者如果是的話,那不被DetourFindFunction()命令識別。從本地模塊C:\WINDOWS\SYSTEM32\USER32.dll迂迴將導致只有來自本地模塊的調用將繞道(我認爲)。

是否有某種方式迂迴是從一個共同的可執行文件加載每個模塊在同一個函數?

也許它有可能具有的代碼從所述裝載的模塊的POV執行?

回答

0

看來我錯了。我確實似乎攔截了所有的消息,這真是太棒了!

然而,該消息是不是一個PostMessage()命令的結果。不完全確定是什麼導致了更低的下降(或者我真的需要知道,可能有一些其他的內部窗口機制用於添加到消息隊列中),但它似乎是由正在使用的DLL觸發的SendMessage(hwnd, WM_MOUSEMOVE, 0, MAKELPARAM(-1, -1))。這使得系統看起來鼠標正在移動,從而發出另一個具有相同位置的WM_MOUSEMOVE

相關問題