Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET如何检查Windows进程是否以“运行”;App";或作为一个;背景应用程序“;_C#_.net_Vb.net_System.diagnostics - Fatal编程技术网

C# .NET如何检查Windows进程是否以“运行”;App";或作为一个;背景应用程序“;

C# .NET如何检查Windows进程是否以“运行”;App";或作为一个;背景应用程序“;,c#,.net,vb.net,system.diagnostics,C#,.net,Vb.net,System.diagnostics,在Windows 8.1上,进入任务管理器并检查进程列表,有两个列表: -一个用于“应用程序”,即可见的前台应用程序 -一个用于“后台进程”,即在后台运行的进程 我的最终目标是计算应用程序加载所需的时间。当应用程序仍在加载时,它会出现在“后台进程”中。但是,一旦加载,它就会出现在“应用程序”中。这将是我关于什么构成应用程序完成加载的标准 我正在使用System.Diagnostics.Process对象来尝试完成此操作。然而,我正在努力找到一种方法来区分“后台进程”下的进程和“应用程序”下的进程

在Windows 8.1上,进入任务管理器并检查进程列表,有两个列表: -一个用于“应用程序”,即可见的前台应用程序 -一个用于“后台进程”,即在后台运行的进程

我的最终目标是计算应用程序加载所需的时间。当应用程序仍在加载时,它会出现在“后台进程”中。但是,一旦加载,它就会出现在“应用程序”中。这将是我关于什么构成应用程序完成加载的标准

我正在使用System.Diagnostics.Process对象来尝试完成此操作。然而,我正在努力找到一种方法来区分“后台进程”下的进程和“应用程序”下的进程


有人知道如何区分这一点吗?我查看了MSDN并尝试了不同的方法,但都没有成功。

当进程没有UI时,属性为零(即后台进程)。

服务通常也由系统用户创建,即任务管理器中的“用户名”列。

通常,如果进程是“应用程序”,它应该有自己的窗口名称,否则,它就是一个“后台应用程序”。因此,代码应如下所示:

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
    }
}

一个背景猜测,但也许后台应用程序没有窗口句柄或主窗口标题?“对于隐藏的进程,也就是在任务栏中不可见的进程,值也是零。这可能是在任务栏最右边的通知区域中出现图标的过程。”@启动任务管理器这些应用程序标记为“后台进程”。@stuartd:没错。这些服务可通过ServiceController.GetServices()获得-