2010-12-09 11 views

Antwort

14

Sie können Process.GetProcesses method verwenden, um Informationen zu allen Prozessen bereitzustellen, die derzeit auf Ihrem Computer ausgeführt werden.

Es werden jedoch alle laufenden Prozesse angezeigt, einschließlich derer, die nicht unbedingt in der Taskleiste angezeigt werden. Also, was Sie tun müssen, um diese Prozesse herauszufiltern, die eine leere MainWindowTitle .Der haben oben verlinkte Dokumentation erklärt, warum dies funktioniert:

Verfahren ein Hauptfenster mit ihm verbunden hat nur dann, wenn der Prozess hat eine grafische Oberfläche. Wenn der zugehörige Prozess kein Hauptfenster hat (MainWindowHandle ist null), MainWindowTitle ist eine leere Zeichenfolge ("").

So konnten Sie so etwas wie den folgenden Code verwenden, die (zu einem Konsolenfenster) auszudrucken wird eine Liste aller aktuell laufenden Anwendungen, die auf der Taskleiste sichtbar sind:

Process[] processes = Process.GetProcesses(); 
foreach (var proc in processes) 
{ 
    if (!string.IsNullOrEmpty(proc.MainWindowTitle)) 
     Console.WriteLine(proc.MainWindowTitle); 
} 
+0

+1: Gute Antwort. –

+0

Ich entschuldige mich für diese 2 Jahre später Kommentar, aber ich bin auf der Suche nach einer ähnlichen Lösung und wollte erwähnen, dass die obige Lösung nicht funktioniert (AFAIK) in Fällen wie WORD oder ACRO-READER, die mehrere haben können Dokument auf dem Desktop geöffnet. In diesem Fall scheint nur das oberste Fenster als Anwendung mit der obigen Methode aufgelistet zu sein. Wenn ich falsch liege, entschuldige ich mich, aber wenn ich richtig liege, würde ich gerne wissen, wie man alle Fenster auflistet, auch wenn sie aus dem gleichen zugrundeliegenden Prozess stammen (wie Akkord oder Wort). –

+0

@Ed. Ja, das listet Prozesse auf, aber diese Anwendungen führen nur einen einzigen Prozess aus. Es ist unwichtig, dass der Prozess mehrere Top-Level-Fenster verwaltet. Sie können Fenster der obersten Ebene mit der [EnumWindows-Funktion] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms633497.aspx) auflisten. Rufen Sie diese Funktion auf und geben Sie einen Zeiger auf eine Callback-Funktion an. Die Callback-Funktion wird für jedes Top-Level-Fenster auf dem Bildschirm einmal aufgerufen. –

Verwandte Themen