【问题标题】:Get the bounds of any window on the desktop in Screen Coordinates, is it possible?在屏幕坐标中获取桌面上任何窗口的边界,可以吗?
【发布时间】:2011-12-26 18:48:21
【问题描述】:

我正在寻找一种方法来获取任何可能在 Windows 机器上随时显示在桌面上的任意窗口的屏幕坐标边界。例如,假设您在桌面上的 adobe 中打开了一个 pdf 文档,我希望能够通过一些编写的程序获取该任意窗口的坐标/边界,使用哪种语言并不重要。

我的具体问题:以上可能吗?

到目前为止,我所做的只是使用 PointerInfo 类,特别是 getPointerInfo() 方法在 Java 中获取鼠标的屏幕位置。 (此处的 API:http://docs.oracle.com/javase/6/docs/api/java/awt/PointerInfo.html)。同样,我所做的只是找出鼠标在屏幕坐标中的位置,这与我的问题没有直接关系,但我认为这是一个很好的起点。

我不是在找人给我一个代码 sn-p 来说明这是如何完成的,只是确认它可以完成,也许还有一个 API 或类文档的链接来提供帮助。同样,我不是在寻找任何特定语言的解决方案。

感谢您的宝贵时间, -凯文

编辑:我已经在 c# 中发布了这个,因为这似乎是解决这个问题的最佳语言。

【问题讨论】:

  • 是的 - 对于“普通窗口”是可能的。

标签: c# java windows coordinates bounds


【解决方案1】:

是的,当然有可能。 (在 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

【讨论】:

  • 感谢您的回答,这很有帮助。
【解决方案2】:

查看this Javadoc for Window (Java AWT)。它似乎做了一些尝试,但它不能保证。

【讨论】:

    【解决方案3】:

    最终用户是否有足够的动力提供帮助?如果是这样就很容易了。

    1. 获取整个屏幕的屏幕截图。
    2. 在图像图标 -> 标签 -> 滚动窗格 -> 框架中向用户显示。
    3. 为标签添加鼠标监听器。
    4. 让用户选择标签的一个矩形部分。
    5. 使用鼠标拖动的起点/终点作为矩形的角。

    当然,可以做一些调整。提供边界角的扩展视图,提供逐个像素调整每个角的方法。如果采用此策略,您可以从设计为在屏幕上选择一个点的this code 开始。

    【讨论】:

      猜你喜欢
      • 2021-01-03
      • 2021-10-22
      • 2016-02-29
      • 2021-05-13
      • 2019-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-07
      相关资源
      最近更新 更多