Donnerstag, 15. Juli 2010

Fenster auswählen mit FindWindow()

Mit .Net Mitteln kann man einen bestimmten laufenden Prozess über die Funktionen System.Diagnostics.Process.GetProcessesByName() und System.Diagnostics.Process.GetProcessesById() auswählen. Man erhält so eine Instanz der Klasse Process, die den gewünschten Prozess speichert. Diese Variable kann dann manipuliert und ausgelesen werden, so kann man beispielsweise den Prozess beenden oder die ID auslesen.
Leider reichen diese Mittel nicht immer aus. Ein Prozess kann unter einem Namen verschiedene Fenster kapseln, eine C# - Anwendung kann beispielsweise mehrere Formulare aufrufen. Möchten wir ein einzelnes Fenster gezielt - und nicht den ganzen Prozess - ansprechen, müssen wir auf die WinAPI zurückgreifen.
In dieser gibt es die Funktion FindWindow().
Sie erwartet zwei Strings als Parameter: Der erste Parameter wird meistens className genannt und bezeichnet den Klassennamen des gewünschten Prozesses / des gewünschten Fensters. Der zweite Parameter, windowText, bezeichnet den Titel des auszuwählenden Fensters. Wird keiner angegeben, werden alle Fenster ausgewählt.
Ein Beispiel folgt im nächsten Post, dort wird die Taskleiste ausgewählt und ausgeblendet. Über System.Diagnostics.Process.GetProcessesByName() kann die Taskleiste nicht ausgewählt werden, da sie sich im Prozess "explorer.exe" "verbirgt", sie kann nur gezielt durch Angabe des richtigen Klassennamens separiert und ausgewählt werden.

Keine Kommentare:

Kommentar veröffentlichen