我試圖獲取所有打開的應用程序的列表。具體來說,如果您打開任務管理器並轉到應用程序選項卡,該列表。獲取所有應用程序的列表
我用這樣的嘗試:
foreach (var p in Process.GetProcesses())
{
try
{
if (!String.IsNullOrEmpty(p.MainWindowTitle))
{
sb.Append("\r\n");
sb.Append("Window title: " + p.MainWindowTitle.ToString());
sb.Append("\r\n");
}
}
catch
{
}
}
就像我已經發現了幾個例子,但是這並不把所有的應用程序給我。它只能抓取我在任務管理器中看到的一半,或者我知道我已經打開。例如,這種方法出於某種原因不會使用Notepad ++或Skype,但可以使用Google Chrome,計算器和Microsoft Word。
有誰知道爲什麼這不能正常工作或如何做?
此外,一位朋友建議它可能是一個權限問題,但我以管理員身份運行visual studio,並且沒有更改。
編輯:我得到的問題是,我給出的大多數解決方案只返回所有進程的列表,這不是我想要的。我只想要打開的應用程序或窗口,就像任務管理器上顯示的列表一樣。不是每一個進程的列表。
此外,我知道這裏有錯誤的代碼,包括空的catch塊。這是一個一勞永逸的計劃,只是爲了弄清楚這是如何工作的。
可能是因爲這些應用沒有主窗口標題。 – cgTag
如果你的程序有一個主窗口標題你可以做這樣的事情Chris Process [] processes = Process.GetProcesses(); foreach(var proc in processes) if(!string.IsNullOrEmpty(proc.MainWindowTitle)) Console.WriteLine(proc.MainWindowTitle); } 你也可以使用'WMI' http://msdn.microsoft.com/en-us/library/windows/desktop/aa394599%28v=vs.85%29.aspx – MethodMan
你甚至在看你的代碼'複製和粘貼? –