Seite 1 von 1
Externes Programm im PB Windows starten
Verfasst: 31.10.2013 09:30
von Velindos
Hallo Leute,
möchte meinen Sunbird(Kalender) innerhalb meines Programms starten/beenden.
Code: Alles auswählen
#Windows = 1
#Webgadget=2
If OpenWindow(0,683, 0,667, 732, "StatusBar", #PB_Window_SystemMenu | #PB_Window_SizeGadget)
If CreateStatusBar(0, WindowID(0))
AddStatusBarField(1366)
EndIf
StatusBarText(0, 0, "Area normal")
WebGadget(#Webgadget,1, 31, 667, 675,"")
; Hier startet er immer extern
SetGadgetText( #Webgadget, "file://" +"C:\Program Files (x86)\Mozilla Sunbird\sunbird.exe")
; Das läuft
;SetGadgetText( #Webgadget, "file://" +"C:\")
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Habe hier ein Beispiel, aber er wird immer extern geöffnet, hat jemand einen Tip wie das innerhalb des Fenster geht?
Gruss ... Velindos
Re: Externes Programm im PB Windows starten
Verfasst: 31.10.2013 10:58
von RSBasic
Du kannst keine ausführbare Anwendung in einem WebGadget anzeigen. Es ist keine HTML-basierte Internetseite.
Was du tun musst, um ein externes Fenster in deinem Fenster einzubinden/anzuzeigen:
1. Handle-Nummer des externen Fensters ermitteln: FindWindow_() oder EnumWindows_()
2. Das externe Fenster mit Hilfe der Handle-Nummer in dein Fenster einbinden: SetParent_()
Re: Externes Programm im PB Windows starten
Verfasst: 31.10.2013 12:52
von Velindos
Hallo,
danke für deinen Tip, habe folgende Vorschlage im Forum gefunden, aber der geht nur mit dem Notepad, wobei da noch der Fokus auf den Notepad nicht funktioniert!
Code: Alles auswählen
#Window = 1
; RunProgram("C:\Program Files (x86)\Mozilla Sunbird\sunbird.exe","","")
RunProgram("Notepad.exe","","",#PB_Program_Hide)
Delay(100) ;!!!!
hwd = FindWindow_(0, "Unbenannt - Editor")
If Not hwd
Debug "Das Fenster konnte nicht gefunden werden."
End
EndIf
; Delay(100) ;!!!!
; hwd = FindWindow_(0, "3D-Pinball für Windows - Space Cadet")
; Ermittle Grösse des Windows
; GetWindowRect_(hwd, r.rect)
; br = r\right - r\left - 6
; hh = r\bottom - r\top - 25
br = 667
hh = 732
OpenWindow(#Window, 683, 0, br, hh, "Test" )
SetParent_(hwd, WindowID(#Window))
;Titelzeile entfernen
style = GetWindowLong_(hwd, #GWL_STYLE)
style & ~#WS_CAPTION
SetWindowLong_(hwd, #GWL_STYLE, style)
SetWindowPos_(hwd,0,0,0,br,hh,#SWP_SHOWWINDOW)
SmartWindowRefresh(#Window, 1)
SetActiveWindow(#Window)
Repeat:
Event = WaitWindowEvent(1)
Until event = #PB_Event_CloseWindow
End
Wenn ich Sunbird freischalte, tritt das Problem auf, das er Sunbird nicht findet, keine Ahnung warum!
Gruss ... Velindos
Re: Externes Programm im PB Windows starten
Verfasst: 31.10.2013 15:52
von RSBasic
@Velindos
Wenn du mit FindWindow_() das Fenster finden möchtest, dann suche lieber stattdessen nach dem Klassennamen, weil es eindeutiger ist. Wenn du nach dem Titel des Fensters suchst, dann musst du beachten, dass der Titel meistens unterschiedlich ist, beispielsweise wenn die Versionsnummer ebenfalls im Titel vorhanden ist oder der Name einer geöffneten Datei. Außerdem wenn im Titel deutschsprachige Wörter vorhanden sind, dann ist es auch keine gute Idee, nach dem Titel zu suchen, weil der Titel in der englischen Version der Anwendung ganz anders lautet.
Wie sieht dein FindWindow-Code für das Programm "Sunbird" aus?
Um die Klassennamen besser finden zu können, empfehle ich dir die folgenden Anwendungen:
http://www.rsbasic.de/temp/WinSpy.exe
http://www.rsbasic.de/temp/ShoWin.exe