.NET 如何检查 Windows 进程是 运行 作为 "App" 还是 "Background application"
.NET How to check if a Windows process is running as an "App" or as a "Background application"
在 Windows 8.1 上,您进入任务管理器并检查进程列表,有两个列表:
- 一个用于 "Apps",它们是可见的前台应用程序
- 一个用于 "Background processes",它们是后台 运行 的进程
我的最终目标是计算应用程序加载所需的时间。当应用程序仍在加载时,它会出现在 "Background processes" 中。但是,一旦加载,它就会出现在 "Apps" 中。这将是我对什么构成应用程序完成加载的标准。
我正在使用 System.Diagnostics.Process 对象来尝试完成此操作。但是,我正在努力想出一种方法来区分 "Background processes" 下的进程和 "Apps" 下的进程。
有人知道如何区分吗?我查看了 MSDN 并尝试了不同的方法,none 其中成功了。
当进程没有UI(即后台进程)时,属性System.Diagnostics.Process.MainWindowHandle为零。
服务通常也由 SYSTEM 用户创建 - 任务管理器中的列 "User Name"。
通常,如果进程是"App",它应该有自己的window名称,否则,它是"Background application"。因此代码应该如下:
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
}
}
在 Windows 8.1 上,您进入任务管理器并检查进程列表,有两个列表: - 一个用于 "Apps",它们是可见的前台应用程序 - 一个用于 "Background processes",它们是后台 运行 的进程
我的最终目标是计算应用程序加载所需的时间。当应用程序仍在加载时,它会出现在 "Background processes" 中。但是,一旦加载,它就会出现在 "Apps" 中。这将是我对什么构成应用程序完成加载的标准。
我正在使用 System.Diagnostics.Process 对象来尝试完成此操作。但是,我正在努力想出一种方法来区分 "Background processes" 下的进程和 "Apps" 下的进程。
有人知道如何区分吗?我查看了 MSDN 并尝试了不同的方法,none 其中成功了。
当进程没有UI(即后台进程)时,属性System.Diagnostics.Process.MainWindowHandle为零。
服务通常也由 SYSTEM 用户创建 - 任务管理器中的列 "User Name"。
通常,如果进程是"App",它应该有自己的window名称,否则,它是"Background application"。因此代码应该如下:
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
}
}