我正在使用Enumprocesses(lpidProcess,cb,lpcbNeeded)确定正在运行的ProcessIds。如何将此列表的子集仅包含“应用程序”,即那些显示在任务管理器“应用程序”选项卡上的进程?
谢谢。
答案 0 :(得分:1)
在MSDN上每个How does Task Manager categorize processes as App, Background Process, or Windows Process?:
如果该进程具有可见窗口,则任务管理器将其称为“应用程序” 。
如果该进程被标记为关键进程,则任务管理器将其称为“ Windows进程”。
否则,任务管理器将其称为“后台进程”。
因此,给定进程ID,您可以通过调用EnumWindows()
来检查它是否有可见窗口,其中回调函数调用GetWindowThreadProcessId()
来检查每个窗口是否属于该进程,以及{{ 1}},以检查每个窗口是否可见。
例如:
IsWindowVisible()