c# - 如何获取当前正在运行的应用程序列表?

标签 c# .net windows winforms

我想以编程方式获取正在运行的(桌面)应用程序列表,然后将此列表显示给用户。它应该类似于 Windows 任务管理器中显示的应用程序列表。

如何在 C# 中创建它?具体来说,我需要一种方法来获取当前正在运行的应用程序列表。

最佳答案

您可以使用 Process.GetProcesses method提供有关当前在您的计算机上运行的所有进程的信息。

但是,这会显示所有正在运行的进程,包括那些不一定显示在任务栏上的进程。所以你需要做的是过滤掉那些有空 MainWindowTitle 的进程。 .上面链接的文档解释了为什么这样做:

A process has a main window associated with it only if the process has a graphical interface. If the associated process does not have a main window (so that MainWindowHandle is zero), MainWindowTitle is an empty string ("").

因此,您可以使用类似于以下代码的代码,它会打印出(到控制台窗口)任务栏上可见的所有当前正在运行的应用程序的列表:

Process[] processes = Process.GetProcesses();
foreach (var proc in processes)
{
   if (!string.IsNullOrEmpty(proc.MainWindowTitle))
        Console.WriteLine(proc.MainWindowTitle);
}

关于c# - 如何获取当前正在运行的应用程序列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4395405/

相关文章:

c# - DbContext 的 ObjectContext.ApplyCurrentValues 的等价物是什么

c# - ASP.NET 网站在生产服务器上性能缓慢

c# - 'object' 不包含 'X' 的定义

c# - 为什么 ASP.NET 不能加载程序集?看起来它正在更改被引用的版本

linux - GSSAPI - Windows Active Directory 互操作性 - 错误接受上下文 : Wrong principal in request

ruby - 无效配置或未列出 Rubies。请修复 'config.yml' 并重新运行 'ruby dk.rb install'

c# - 使用最小起订量部分模拟类

c# - 是否可能有太多的匿名代表?

.net - .NET NEST中的Elasticsearch查询未初始化对象

windows - 如何在 windows 2012 服务器中终止特定任务