如何检索任务管理器中显示的信息?

时间:2014-05-26 08:24:43

标签: winapi

在C ++中使用Win32,如何获取当前正在运行的进程的信息,如任务管理器中所示?

我特意试图获得三条信息:

  • 正在运行的进程列表。我目前正在使用EnumProcesses成功获取processId值列表。
  • 对于每个processId:它是否会列在任务管理器的“进程”窗格中的“应用程序”下。我正在努力如何确定正在运行的进程是“应用程序”,而不是“后台进程”或“Windows进程”。我只对“应用程序”中列出的内容感兴趣。
  • 对于每个processId:在“详细信息”窗格中,应用程序的“描述”

类似问题的其他SO答案似乎适用于C#,而不适用于C ++。

所以......回顾一下:对于给定的进程Id,我如何确定任务管理器是否将其视为“应用程序”,如果是,我如何从processId获取“描述”。

2 个答案:

答案 0 :(得分:1)

您可以使用 VerQueryValue() 获取进程描述信息 如果您需要有关其工作原理的示例,您可以查看 here 并找到有效且清晰的代码。

答案 1 :(得分:0)

您可以致电VerQueryValue()

获取流程描述信息

至于你是否可以获得后台进程,你可能会检查WS_VISIBLE(最好通过调用IsWindowsVisible()完成),但这并不一定意味着进程是背景一。请参阅Han Passant's answer