2011-10-14 125 views
0

我正在嘗試獲取僅具有任務欄圖標的應用程序的所有窗口句柄。獲取所有擁有任務欄圖標的窗口

我已經轉換爲C#的解決方案已失敗:

Enumerate windows like alt-tab does

Enumerate windows like alt-tab does

Enumerate windows like alt-tab does

和一對夫婦,我失去的已經軌道。 所有這些解決方案要麼崩潰,要麼提出像svchost,插件進程等無窗口進程。

基本上我只需要在圖標任務欄中有效的窗口。 我使用的

Process.MainWindowHandle 

什麼是一些工作解決這個窗口句柄?有沒有與我錯過的工作解決方案的線程?

回答

1

嘗試檢索設置MainWindowTitle屬性的所有進程。

它感覺不像是一個非常優雅的解決方案,但它對我來說很有效,只會帶回那些正在運行並且在任務欄中明顯打開的應用程序。

List<Process> taskBarProcesses = Process.GetProcesses(). 
             Where(p => !string.IsNullOrEmpty(p.MainWindowTitle)) 
             .ToList(); 
+0

不適用於窗口瀏覽器,任何方式也包括這些? – Drake

+0

簽出以下博客文章:[C#中的Access Explorer和Internet Explorer查找網頁和目錄](http://omegacoder.com/?p=63)。它顯示瞭如何使用[ShellWindows](http://msdn.microsoft.com/en-us/library/windows/desktop/bb773974(v = vs.85).aspx)對象來檢索打開的資源管理器窗口集合。 – jdavies