簡體   English   中英

獲取當前正在運行的應用程序列表,而不是進程 c#

[英]Getting a list of current APPLICATIONS running, not processes c#

我知道您可以使用Process[] processes = Process.GetProcesses();獲取當前正在運行的Process[] processes = Process.GetProcesses();列表Process[] processes = Process.GetProcesses(); Process[] processes = Process.GetProcessesByName("processName");

但是我需要獲取當前正在運行的應用程序,不一定是特定的進程。 原因是有時在后台運行的進程與某個應用程序相關,但實際應用程序本身並未運行。 但出於我的目的,我需要知道實際應用程序本身是否正在運行。

有沒有辦法在 C# 中做到這一點?

編輯:顯然我還沒有說清楚。 例如,在任務管理器中,您可以看到當前正在運行的應用程序列表以及當前正在運行的進程列表。 我正在嘗試獲取可以在任務管理器中看到的應用程序列表,而不是大量的進程列表

獲取進程列表,然后按具有MainWindowHandle進程過濾。

僅當進程具有圖形界面時,進程才具有與其關聯的主窗口。 如果關聯進程沒有主窗口,則 MainWindowHandle 值為零。 對於已隱藏的進程,即在任務欄中不可見的進程,該值也為零。 對於在任務欄最右側的通知區域中顯示為圖標的進程,可能就是這種情況。

如果它有一個主窗口,就任務管理器而言,它就是一個“應用程序”。

var processes = Process.GetProcesses()
    .Where(p=> p.MainWindowHandle != 0)
    .ToArray();

艾米的答案是一個,但我不得不把它改成

var running_apps = Process.GetProcesses()
                          .Where(p => (long)p.MainWindowHandle != 0)
                          .ToArray();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM