解决方法
您可以使用
Process.GetProcesses
method提供有关计算机上当前正在运行的所有进程的信息.
但是,这会显示所有正在运行的进程,包括未必显示在任务栏上的进程.因此,您需要做的是过滤掉那些空MainWindowTitle
的进程.上面链接的文档解释了为什么这有效:
A process has a main window associated@H_403_10@ with it only if the process has a@H_403_10@ graphical interface. If the associated@H_403_10@ process does not have a main window@H_403_10@ (so that MainWindowHandle is zero),@H_403_10@ MainWindowTitle is an empty string@H_403_10@ (“”).
因此,您可以使用类似下面的代码,它将打印出(在控制台窗口中)任务栏上可见的所有当前正在运行的应用程序的列表:
Process[] processes = Process.GetProcesses(); foreach (var proc in processes) { if (!string.IsNullOrEmpty(proc.MainWindowTitle)) Console.WriteLine(proc.MainWindowTitle); }