如何知道焦点窗口的名称/ID

Posted

技术标签:

【中文标题】如何知道焦点窗口的名称/ID【英文标题】:How to know the name/ID of window in focus 【发布时间】:2014-03-04 13:12:30 【问题描述】:

如何在 OpenCV 中专门了解焦点窗口的名称/ID。 如果 OpenCV 无法实现,是否有任何事件处理/回调或 windows api 可以实现这一点。 我正在使用 Windows 7 和 8.1。 我想做一些类似(但不限于)的事情:

如果窗口处于焦点状态,并且发生鼠标或按键等事件, 然后更新那个特定的窗口

.

【问题讨论】:

【参考方案1】:

正如 Kris 所建议的,window.xml 存在解决方案。使用 windows api 来处理活动窗口:

HWND WINAPI GetActiveWindow(void);

现在使用GetWindowText() 函数提取标题,如果有的话。它可能不是便携式的。其他操作系统应该有类似的api。

【讨论】:

【参考方案2】:

首先,我不知道 windows 或任何其他 api 是否可以提供帮助。 我有一个想法,以某种方式截屏,然后使用 opencv 本身进行图像处理。假设焦点窗口将位于顶部且最集中,因此我们可以轻松看到名称。如果有的话,我们可以处理颜色以将焦点窗口与其他窗口分开。并使用 OCR 提取窗口名称。

【讨论】:

这永远不会健壮。为什么不直接使用原生 API 来获取活动窗口呢?

以上是关于如何知道焦点窗口的名称/ID的主要内容,如果未能解决你的问题,请参考以下文章

vb如何获得一个正在运行程序的窗体名称

获取窗口的描述符[重复]

如何按名称关闭窗口?

已知进程ID,如何获取进程名称 以及路径。

如果我知道图像的名称,如何获取图像的资源 ID? [复制]

如何在 DIV 中获取元素名称和 ID 的类型