我有一个设置SetWindowsHookEx(WH_MOUSE_LL, , ,)
右键单击钩子的过程。我的过程在两个监视器上都以150%的比例在Window 10.0.10586上设置为DPI系统感知。这是通过致电设置的SetProcessDpiAwareness(PROCESS_SYSTEM_DPI_AWARE)
。
我遇到的问题是,例如Office 2007不了解DPI,因此让我们将MS Word放在屏幕的右四分之一处。右键单击右下角任务栏上方,鼠标钩将发送坐标1279、675-缩放为Word。然后,我右键单击Visual Studio(了解DPI),在整个屏幕上近四分之三,鼠标钩向我发送了Visual Studio的坐标,例如1279、1008。因此,如果我在屏幕上单击较高的位置,则可能会得到相同的1279、675。
我的过程试图通过调用WindowFromPoint
API来确定哪个窗口在该点,但是在这种情况下,这显然会失败,因为两个应用程序“共享”同一点。
是否可以强制鼠标挂钩始终发送原始物理坐标,而不是缩放到不了解DPI的应用程序的原始物理坐标?如果是这样,怎么办?或者,还有其他方法可以确定鼠标钩hWnd
或processID
鼠标钩吗?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句