Win32 - 可以枚举属于调用线程的窗口吗?

时间:2010-12-28 18:24:58

标签: ruby winapi

来自GetActiveWindow上的MSDN “检索附加到调用线程的消息队列的活动窗口的窗口句柄。”

我正在使用Ruby API编写SketchUp插件。目前正试图通过Win32对某些窗口进行一些调整。在Ruby API中,我对SU的窗口和线程的信息非常有限。只要SketchUp窗口具有焦点,GetActiveWindow就可以正常工作 - 但是否则会失败。

所以我正在寻找一种安全的方法来掌握SketchUp窗口的句柄,无论它是否有焦点。

看看GetActiveWindow如何能够获得调用进程的活动窗口我想知道是否可以枚举属于调用进程的窗口。然后我可以浏览结果并找到我的窗口。

或者,获取调用线程的进程ID,这样我就可以枚举所有窗口,并选择属于我的脚本运行的线程的窗口。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您可以使用EnumWindows查找所有顶级窗口。在Ruby中,win32-api支持传入适当的回调。

编辑:然后您可以使用GetWindowThreadProcessId来确定每个窗口所属的进程。

编辑:要确定运行脚本的流程的流程ID,请使用GetCurrentProcessId