【问题标题】:How to get a list of all running GUI apps? [closed]如何获取所有正在运行的 GUI 应用程序的列表? [关闭]
【发布时间】:2020-10-26 23:42:43
【问题描述】:

我想知道是否可以使用 python 列出所有在 Windows 上运行的 GUI 应用程序。

我一直在做一些研究,人们推荐使用psutil,看起来还可以,但是,它列出了所有活动的进程,我没有能够找到有关如何仅保留与活动的 GUI 应用程序(例如,Firefox、Chrome、Skype、Discord 等)关联的进程的任何资源。

有没有办法做到这一点?也许不使用 Python(尽管那会很棒),也许通过一些 C++?获取进程的PID就足够了。

编辑:感谢 chrisbyte 和 Vijaye Raji,win32guiEnumWindows 正是我想要的。

【问题讨论】:

  • win32gui 可能会有所帮助 (pip install pywin32)。这里有一个示例来枚举活动窗口并获取完整标题superuser.com/a/677023,尽管标题是完整标题而不是应用程序名称本身。
  • 系统中没有任何东西可以让您区分不会显示 GUI 的进程和会显示 GUI 的进程。
  • 有很多方法可以定义一个 GUI 进程:当前显示一个或多个窗口的进程,具有至少一个 GUI 线程(即,具有消息队列的线程)的进程,其可执行文件的进程图像在可选的 COFF 图像头的子系统字段中具有 IMAGE_SUBSYSTEM_WINDOWS_GUI、没有附加控制台的进程等。如果您的程序具有足够的权限,则可以检测到其中的大部分。但是@IInspectable 是正确的,一些应用程序可以选择创建一个 GUI(可能连同一个控制台)。所以有些定义太模糊了。

标签: python windows process cpu psutil


【解决方案1】:

通过 GUI 进程,我假设您的意思是附加了窗口的进程。您需要的是EnumWindows API,它带有回调,在回调中,您可以使用GetWindowThreadProcessId 获取每个窗口的进程ID。

这是一个足够接近您的答案:https://stackoverflow.com/a/21767578

【讨论】:

  • 谢谢!这正是我所需要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-26
  • 2019-06-28
  • 1970-01-01
  • 2013-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多