如何检查进程是不是具有图形界面(没有 .NET)?
Posted
技术标签:
【中文标题】如何检查进程是不是具有图形界面(没有 .NET)?【英文标题】:How can I check if a process has a graphical interface (without .NET)?如何检查进程是否具有图形界面(没有 .NET)? 【发布时间】:2013-10-25 11:05:58 【问题描述】:我试图了解哪些进程具有图形界面。我试图使用GetGuiResources,但有些进程有GUI 资源但没有窗口。现在我使用WaitForInputIdle - 同样,一些进程已准备好输入,但它们没有窗口:(。如何检查进程是否有图形界面?
附:我使用 Python + ctypes,但是关于 C++ 的示例或小解释我应该使用什么就足够了 :)
【问题讨论】:
你的实际目标是什么? 【参考方案1】:如果您的目标是 Windows,您可以使用 Win32 API。 EnumWindows 函数枚举子窗口,或者您也可以使用 EnumThreadWindows 仅枚举非子窗口。
希望能给你一些帮助。
【讨论】:
感谢您的回答。 EnumWindows 返回很多句柄。我需要将每个句柄与当前进程相关联,是吗? EnumThreadWindows - 我应该获取所有线程,然后使用 EnumThreadWindows 检查每个线程,是吗? EnumThreadWindows 需要与 Window 关联的 threadId。如果您只需要 UI 进程,就可以使用 EnumDesktopWindows 函数。看看它是否适合您的解决方案。 Example 不要忘记在回调中返回 TRUE 或 FALSE :) 感谢您的回答。现在它起作用了。我从进程中提取所有线程,然后使用 EnumThreadWindows 从每个线程中提取窗口句柄,然后检查窗口是否可见(IsWindowVisible)。以上是关于如何检查进程是不是具有图形界面(没有 .NET)?的主要内容,如果未能解决你的问题,请参考以下文章