我有一個SetWindowsHookEx(WH_MOUSE_LL,,,)右擊鉤子的過程。我的過程在Window 10.0.10586上設置爲DPI系統,兩臺顯示器的縮放比例均爲150%。這是通過調用SetProcessDpiAwareness(PROCESS_SYSTEM_DPI_AWARE)來設置的。高DPI縮放,鼠標鉤子和WindowFromPoint
我的問題是例如Office 2007不知道DPI,因此讓我們將MS Word放在屏幕的右側四分之一處。右鍵單擊右下角任務欄上方的鼠標鉤子,發送1279,675的座標 - 縮放到Word。然後,我右擊Visual Studio(DPI認識),在屏幕上將近四分之三的時間,並且鼠標鉤向我發送例如來自Visual Studio的1279,1008。所以如果我點擊更高的屏幕我可能會得到相同的1279,675.
我的過程試圖通過調用WindowFromPoint API來確定哪個窗口在該點,但是在這種情況下,這顯然會失敗,因爲兩個應用程序「共享」同一點。
是否可以強制鼠標鉤始終發送原始物理座標而不是縮放到DPI不知道的應用程序?如果是這樣,怎麼樣?或者,是否有其他方式來確定鼠標鉤子的hWnd或processID?
聽起來像一個壞主意。當您調用GetCursorPos時,光標可能在其他地方。 –
這是迄今爲止我能想到的最好的,似乎接近瞬間,但我願意接受任何更好的建議。 – birdwes
[GetMessagePos](https://msdn.microsoft.com/en-us/library/windows/desktop/ms644938.aspx)可能更適合。 – IInspectable