Findwindow in .net

Hallo
So Was ich such ist eigentlich ganz einfach aber scheinbar schwierig zu finden

Standardmäßig gibt es die API Funktion Findwindow die Funktionsweise dürft bekannt sein
Mein Fragest ist gibt das im .net Framework 3,5 oder kleiner eine Methode Klasse oder was auch immer die zum selben Ergebnis führ wie die API Funktion.

Mit freundlichen Grüßen
Andreas

Wohl eher nicht. Aber du kannst hierfür P/Invoke nutzen.
http://pinvoke.net/default.aspx/user32.FindWindow

Grüße, JasonDelife.

Hi,
mit system.diagnostics.process.mainwindowtitle

kann man wenigstens das Hauptfenster finden wen du die Auflistung der Prozesse durchläufst.

Gruss
Joey

Super danke Joey habs mit einem kleines Programm gelöst

für alle dies interessier der Code noch

 Private Function Find\_Windows(ByVal m\_Windowname As String) As Boolean
 Dim m\_processList As System.Diagnostics.Process()
 Dim m\_Process As System.Diagnostics.Process
 Dim m\_result As Boolean

 m\_processList = System.Diagnostics.Process.GetProcesses()
 m\_result = False
 For Each m\_Process In m\_processList
 If m\_Windowname.ToString.ToUpper = m\_Process.MainWindowTitle.ToString.ToUpper Then
 m\_result = True
 End If
 Next
 Return m\_result
 End Function

Hallo!

Damit mag es vielleicht funktionieren, aber der Aufruf von FindWindow selbst per P/Invoke, wie anderswo vorgeschlagen, ist wesentlich effizienter und Du musst nicht mit Process.GetProcesses() hantieren, welches nicht auf jedem System und in jeder Umgebung richtig funktioniert.
Insofern die Aufforderung: Schau’ es Dir wenigstens mal an, es rentiert sich!

Gruß,
Martin

Hallo Martin

Korrigiert mich wenn ich jetzt falsch liege aber PInvoke macht eigentlich nichts anderes als dass die API Funktion in das Programm verlinkt wird ähnlich wie unter vb6 der Declare Befehl. Und das ist eigentlich genau dass was ich nicht wollte.

Natürlich ist mir klar dass überall wo noch nicht das entsprechende Framewerk.net installiert ist meine Funktion nicht Funktionieren wird.

Mit freundlichen Grüßen
Andreas

Hallo nochmal!
Ja, P/Invoke („platform invoke“) entspricht im wesentlichen dem Declare von VB. Du rufst letztlich Betriebssystemfunktionen direkt auf.

Dass C# oder VB.NET Code nur läuft, wenn das .NET Framework installiert ist, versteht sich von selbst. Das meinte ich aber auch nicht. Mit Process.GetProcesses() hatte ich in der Vergangenheit schon etliche Probleme.

  1. Funktioniert das nicht, wenn der Benutzer nur eingeschränkte Rechte hat, wenn ich mich recht erinnere.
  2. Gibt es Systeme, auf denen gewisse Performance-Counter deaktiviert oder defekt sind, wodurch Du dann eine InvalidOperationException bekommst, die ganz bescheiden zu beheben ist.

Die Win32-Funktion FindWindow() hat diese Einschränkungen nicht und ist - wie gesagt - um Größenordnungen schneller.

Aber wenn Du partout nicht willst…

Gruß,
Martin