如何检查进程是不是具有图形界面(没有 .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)?的主要内容,如果未能解决你的问题,请参考以下文章

VB.NET程序界面假死如何解决

如何检查程序是不是使用 .NET?

如何检查linux上安装lib是不是齐全

linux 怎么自己跳回图形界面,当我开启字符界面,密码还没有输完就跳到字符界面

Ubuntu开机没有图形界面 进入tty的拯救方法

如何检查子进程是不是正确终止? [复制]