我知道您可以通过使用Process[] processes = Process.GetProcesses();或获取当前正在运行的进程的列表Process[] processes = Process.GetProcessesByName("processName");
但是我需要获取当前正在运行的应用程序,不一定是特定的进程。原因是有时在后台运行的进程与某个应用程序相关,但实际应用程序本身并未运行。但出于我的目的,我需要知道实际应用程序本身是否正在运行。
有没有办法在 C# 中做到这一点?
编辑:显然我还没有说清楚。例如,在任务管理器中,您可以看到当前正在运行的应用程序列表以及当前正在运行的进程列表。我正在尝试获取可以在任务管理器中看到的应用程序列表,而不是大量的进程列表
小智 6
获取进程列表,然后按具有MainWindowHandle.
仅当进程具有图形界面时,进程才具有与其关联的主窗口。如果关联进程没有主窗口,则 MainWindowHandle 值为零。对于已隐藏的进程,即在任务栏中不可见的进程,该值也为零。对于在任务栏最右侧的通知区域中显示为图标的进程,可能就是这种情况。
如果它有一个主窗口,就任务管理器而言,它就是一个“应用程序”。
var processes = Process.GetProcesses()
.Where(p=> p.MainWindowHandle != 0)
.ToArray();
Run Code Online (Sandbox Code Playgroud)