Da ich Gestern selbst mächtig probleme damit hatte, eine Routine zu finden die mir den hWnd-Handle
nach dem Ausführen einer Datei zurückliefert und ich dieses Problem aber inzwichen Lösen konnte,
möchte ich die Routine mal hier bekannt geben, damit sich andere nicht auch noch damit rumplagen müssen.

Also der Code ist recht Simpel. Er Startet eine Datei (mit Win+GUI) und liefert dabei statt der ProcessID den Fenster-Handle. (hWnd)
Ich denke mal der eine oder andere wird es sicherlich noch gebrauchen können.

Code: Alles auswählen
Procedure.i EnumWindowsCallBack(hwnd.i, Handle.i)
Protected Title$ = Space(1024), ProcessID.i, st.i = #True
GetWindowText_(hwnd, @Title$, Len(Title$))
GetWindowThreadProcessId_(hwnd, @ProcessID)
If Title$<>"" And IsWindowVisible_(hwnd)
If ProcessID = PeekI(Handle)
PokeI(Handle, hwnd)
st = #False
EndIf
EndIf
ProcedureReturn st
EndProcedure
Procedure.i Execute_WindowFile(Filename$, Parameter$, WorkDir$)
Protected st.i, Handle.i, Check.i
If FileSize(Filename$) > 0
st = RunProgram(Filename$, Parameter$, WorkDir$, #PB_Program_Open)
Else
ProcedureReturn #Null
EndIf
Handle = ProgramID(st) : Check = Handle
Repeat
Delay(10)
EnumWindows_(@EnumWindowsCallBack(), @Handle)
Until Handle <> Check And IsWindow_(Handle) <> #Null
CloseProgram(st)
ProcedureReturn Handle
EndProcedure
file$ = GetEnvironmentVariable("SystemRoot") + "\System32\calc.exe"
hwnd = Execute_WindowFile(file$, "", "")
Delay(500)
CloseWindow_(hwnd)
Delay(500)
OpenIcon_(hwnd)
Delay(1500)
SendMessage_(hwnd, #WM_CLOSE, 0, 0)
Debug "Window-Handle ( hWnd.l ) = " + Str(hwnd)