haegar75
Goto Top

externes Programm starten und Position festlegen

Hallo Leute,
ich fürchte ich stelle mich wiedereinmal ungeschickt an..
Ich möchte in einem vb.net Programm eine externe Anwendung mit Shell(...) mehrfach starten (2-4mal..) Dabei möchte ich die Fenster der Anwendungen schön nebeneinander anordnen. Hier http://www.schmittis-page.de/index.html?/excel/faq/f38.htm habe ich einen Anstaz gefunden der mir aber nicht weiterhilft, da bei allen Fenstern der Fenstertitel gleich ist.. Ich muss doch irgendwie an das Handle der Fenster kommen, denn schließlich starte ich sie ja selbst, oder? Wer weiß Rat? face-confused

Content-Key: 112657

Url: https://administrator.de/contentid/112657

Printed on: April 23, 2024 at 07:04 o'clock

Member: bastla
bastla Mar 29, 2009 at 20:10:40 (UTC)
Goto Top
Hallo Haegar75!

Da ja Shell() eine PID als Rückgabewert liefert, könntest Du anhand dieser versuchen, das entsprechende Fenster zu finden - siehe zB http://support.microsoft.com/kb/242308 oder etwa hier oder da ...

Grüße
bastla
Member: Haegar75
Haegar75 Mar 30, 2009 at 17:56:54 (UTC)
Goto Top
Hi,
ich schon wieder face-confused Also die obigen Beispiele habe ich probiert, aber die Funktion:

Function GetWinHandle(hInstance As Long) As Long
Dim tempHwnd As Long

' Grab the first window handle that Windows finds:
tempHwnd = FindWindow(vbNullString, vbNullString)

' Loop until you find a match or there are no more window handles:
Do Until tempHwnd = 0
' Check if no parent for this window
If GetParent(tempHwnd) = 0 Then
' Check for PID match
If hInstance = ProcIDFromWnd(tempHwnd) Then
' Return found handle
GetWinHandle = tempHwnd
' Exit search loop
Exit Do
End If
End If

' Get the next window handle
tempHwnd = GetWindow(tempHwnd, GW_HWNDNEXT)
Loop
End Function

läuft in einer Endlosschleife wenn ich es aufrufe weil tempHwnd bei jedem Durchlauf den gleichen Wert hat. Die PID stimmt, dass konnte ich im Taskmanager kontrollieren..
Jemand ne Idee?
Gruß Haegar
Member: bastla
bastla Mar 30, 2009 at 18:11:07 (UTC)
Goto Top
Hallo Haegar75!

Nur zur Sicherheit: GW_HWNDNEXT hat den Wert 2?

Grüße
bastla
Member: Haegar75
Haegar75 Mar 30, 2009 at 18:13:56 (UTC)
Goto Top
Zitat von @bastla:
Hallo Haegar75!

Nur zur Sicherheit: GW_HWNDNEXT hat den Wert 2?

Grüße
bastla


Genau, akkurat 2... Was könnte sonst noch schiefgehen?
Member: Haegar75
Haegar75 Mar 31, 2009 at 18:42:43 (UTC)
Goto Top
Die Getwindow-Funktion treibt mich in den Wahnsinn. Sämtliche Beispiele im Netz sind genauso aufgebaut, aber bei mir klappts nicht.. Habe als Alternative die Enum Windows-Funktion gefunden, blicke das aber nicht so richtig.. Hat die schon jemand benuzt?
Gruß Haegar
Member: Haegar75
Haegar75 Apr 03, 2009 at 16:05:00 (UTC)
Goto Top
Hi,
bin immer noch am kämpfen face-confused Habe auch mal die Findwindow-Funktion ausprobiert und bekomme die auch nicht ans laufen. Habe versucht das Fenster der calc.exe zu bekommen mit:
hWndapp = FindWindow(vbNullString, "Rechner") mit dem Resultat, dass in hWndapp egal ob das Fenster offen ist oder nicht ein negativer Longwert drinsteht der sich bei jeder Abfrage ändert. Eigentlich sollte doch 0 zurückgegeben werden wenn das Fenster nicht existiert, oder?
Gruß Haegar