Externes Programm im PB Windows starten

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Externes Programm im PB Windows starten

Beitrag 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
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Externes Programm im PB Windows starten

Beitrag 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_()
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Re: Externes Programm im PB Windows starten

Beitrag 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
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Externes Programm im PB Windows starten

Beitrag 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
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten