使用c#显示运行桌面的应用程序列表

Jam*_*mes 6 c#

如何以编程方式使用C#获取运行(桌面)应用程序列表?想想Windows任务管理器应用程序列表

Cod*_*ray 14

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

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

仅当进程具有图形界面时,进程才具有与其关联的主窗口.如果关联的进程没有主窗口(以便MainWindowHandle为零),则MainWindowTitle为空字符串("").

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

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

  • 进程没有监视器亲和力,@Alok。某些处理器不显示任何用户界面,因此不会出现在监视器上。其他进程可能会显示多个窗口,并且这些窗口可能会出现在多个不同的监视器上。您需要选择一个窗口,然后查看该窗口位于哪个监视器上。在 Win32 中,您可以使用“MonitorFromWindow”函数,传入窗口句柄(“HWND”)并获取监视器句柄(“HMONITOR”)。您可以在 .NET 中 P/Invoke 它,也可以直接从 WinForms 使用“System.Windows.Forms.Screen.FromPoint”。 (2认同)