Aktive Fenster-Handles erkennen (C#)

MichiStroi

Erfahrenes Mitglied
Hallo,
Ich möchte, dass mein Programm sämtliche Fensterhandles ausliest und diese mir auflistet.
Ausserdem soll es erkennen welches Fenster gerade Aktiv ist.
Hat jemand eine Idee wo ich was dazu finden kann?
Danke!
lg
Michi
 
Hallo!
Es gibt "System.Diagnostics.Process", vielleicht hilft dir das weiter. Mit der Methode "GetProcesses" kannst du dir alle Prozesse in ein Array holen.
Ich hab hier ein VB.Net Beispiel:
Code:
Dim AlleProzesse() As System.Diagnostics.Process
Dim c As New System.Diagnostics.Process
AlleProzesse = c.GetProcesses

Jetzt kannst du dir verschiedene Sachen des Prozesses ausgeben lassen:
Code:
MainWindowHandle_Von_Prozess123 = AlleProzesse(123).MainWindowHandle
Ich hab das einfach über ausprobieren rausgefunden, kann dir also nicht sagen ob der Code irgendwelche Nebeneffekte hat ;-)
Vielleicht hilft es dir ja.
 
Sorry ich weiss zwar das dieses Thema älter ist als drei Jahre, aber ich hab da eine sehr komfortable Lösung:

http://johannes.www01.dc02.de/downloads/Visual Studio/Window.vb

Wenn du alle Sichtbaren Fenster haben willst:

Dim win As Window = Window.GetWindowByHandle(0)
For each subwin In win.Childs
If subwin.Visible Then
' Hier dein Code zum einfügen in ein ListView
End If
Next

Diese Klasse unterstützt auch Parenting, Get/Set Text, Unterfenster und noch einiges mehr!
Sag mir auch mal was ihr haltet.
Spart nicht mit Lob und der Verbesserungskritik ;-)
 
Ach ja.

Dim w As New Window([Klassenname],[Fenstertitel])
Beide Parameter sind optional

w.Childs
Gibt ein Array von Window zurück, das alle Unterfenster enthält

w.ClassName
Gibt den Klassennamen zurück

w.Close()
Sendet eine Schließanfrage an das Fenster. Selber Effekt wie klicken auf das Schließen-Kästchen

w.Enabled
Legt fest, ob das Fenster reagieren darf. Wenn Enabled = False, reagiert das Fenster nicht mehr

w.Focus()
Versucht den Focus auf dieses Fenster umzuleiten

w.GetSubWindowByClassName([Klassenname])
Findet ein Unterfenster des aktuellen Fensters anhand des Klassennamens

w.GetSubWindowByName([Fenstertitel])
Findet ein Unterfenster des aktuellen Fensters anhand des Titels

w.GetWindowByClassName([Klassenname])
Findet ein Fenster anhand des Klassennamens

w.GetWindowByName([Fenstertitel])
Findet ein Fenster anhand des Fenstertitels

w.GetWindowByHandle([Handle])
Findet ein Fenster anhand des Handles

w.Handle
Gibt den Handle zurück

w.Parent
Gibt das übergeordnete Fenster zurück oder legt es fest

w.ProcessID
Gibt die Prozess-ID des Prozesses zurück, dem das Fenster gehört

w.SetAppWinStyle([AppWinStyle])
Setzt dem Fenstermodus mithilfe von Microsoft.VisualBasic.AppWinStyle

w.Text
Gibt den Titel / Text des Aktuellen Fensters wieder oder legt ihn fest

w.Visible
Gibt an, ob das Aktuelle Fenster sichtbar ist

w.SpecialWindows.Active
Das Aktive Fenster

w.SpecialWindows.Desktop
Der Desktop

w.SpecialWindows.Root
Das Fenster dem ALLE anderen Untergeordnet sind

w.SpecialWindows.Startbutton
Der Windows-Startbutton

w.SpecialWindows.Taskbar
Die Taskleiste
 
Zurück