我正在寻找一种方法来获取任何可能在Windows机器上显示在桌面上的任意窗口的屏幕坐标范围。例如,假设您在桌面上的adobe中打开了pdf文档,我希望能够通过一些书面程序获取该任意窗口的坐标/边界,使用哪种语言并不重要。
我的具体问题:上述情况可能吗?
到目前为止我所做的只是使用PointerInfo类,特别是getPointerInfo()方法,在Java中获取鼠标的屏幕位置。 (此处为API:http://docs.oracle.com/javase/6/docs/api/java/awt/PointerInfo.html)。同样,我所做的就是找出鼠标在屏幕坐标中的位置,这与我的问题没有直接关系,但我认为这是一个很好的起点。
我不是在找人给我一个如何完成的代码片段,只是承认它可以完成,也许是一个API或类文档的链接来帮助我。同样,我不是在寻找任何特定语言的解决方案。
感谢您的时间, -Kevin
编辑:我在c#中发布了这个,因为它似乎可能是解决此问题的最佳语言。答案 0 :(得分:2)
是的,当然有可能。 (在Windows下,用于此工作的最佳语言是C#。)
通过仅使用dotnet对象并仅调用dotnet函数,可能有某种方法可以做到这一点,但我不知道任何这样的方法。
我所知道的方式涉及pinvoke,这是dotnet中的托管代码可以调用本机Windows dll中的非托管代码的机制。
查看WindowFromPoint
函数:
http://www.pinvoke.net/default.aspx/user32.windowfrompoint
找到窗口后,查看GetWindowRect
功能:
http://www.pinvoke.net/default.aspx/user32.getwindowrect
答案 1 :(得分:0)
查看this Javadoc for Window(Java AWT)。它似乎做了一些尝试,但它无法保证。
答案 2 :(得分:0)
最终用户是否有足够的动力来提供帮助?如果是这样很容易。
当然,可以做一些调整。提供边界角的扩展视图,提供逐个像素地调整每个角落的方法。如果采用这种策略,您可以从设计用于选择屏幕上的点的this code开始。