以编程方式确定给定processid的应用程序状态

时间:2018-11-29 20:40:58

标签: c++ winapi

我正在使用Enumprocesses(lpidProcess,cb,lpcbNeeded)确定正在运行的ProcessIds。如何将此列表的子集仅包含“应用程序”,即那些显示在任务管理器“应用程序”选项卡上的进程?

谢谢。

1 个答案:

答案 0 :(得分:1)

在MSDN上每个How does Task Manager categorize processes as App, Background Process, or Windows Process?

  

如果该进程具有可见窗口,则任务管理器将其称为“应用程序”

     

如果该进程被标记为关键进程,则任务管理器将其称为“ Windows进程”。

     

否则,任务管理器将其称为“后台进程”。

因此,给定进程ID,您可以通过调用EnumWindows()来检查它是否有可见窗口,其中回调函数调用GetWindowThreadProcessId()来检查每个窗口是否属于该进程,以及{{ 1}},以检查每个窗口是否可见。

例如:

IsWindowVisible()