.NET How to check if a Windows process is running as an “App” or as a “Background application”

梦想与她 提交于 2019-12-01 07:36:40

问题


On Windows 8.1 you go into the task manager and check the list of processes, there are two lists: - One for "Apps", which are visible foreground apps - One for "Background processes", which are processes running in the background

My end goal is to time how long it takes an application to load. When the application is still loading, it appears in "Background processes". However, once loaded, it appears in "Apps". This is going to be my criteria on what constitutes an app finishing loading.

I am using a System.Diagnostics.Process object to try to accomplish this. However, I am struggling to come up with a way to distinguish between a Process under "Background processes" and a Process under "Apps".

Does anyone have an idea on how to make this distinction? I looked through MSDN and tried different methods, none of which have been successful.


回答1:


The property System.Diagnostics.Process.MainWindowHandle is zero when process has not UI (i.e. is background process).




回答2:


Normally, if a process is an "App", it should have its own window's name, otherwise, it is a "Background application". Thus the code should be as follow:

Process[] arrProcess = Process.GetProcesses();

foreach (Process process in arrProcess)
{
    if (!string.IsNullOrEmpty(process.MainWindowTitle))
    {
    //Do something with your App
    }
    else
    {
    //Do something with your Background process
    }
}



回答3:


Services are also usually created by SYSTEM user - the column "User Name" in task manager.



来源:https://stackoverflow.com/questions/39708184/net-how-to-check-if-a-windows-process-is-running-as-an-app-or-as-a-backgroun

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!