ein externes Programm (geschrieben in C++, mit boost Thread) soll eine PB DLL benutzen.
In der DLL existieren zwei public Funktionen zum Aufruf. Generell funktioniert das auch,
aber immer wenn ich mit der zweiten Funktion den Status des offenen Fensters überprüfe,
d.h. wenn das Fenster geöffnet ist, soll der Inhalt der Site aktualisiert werden. Und genau
dann stürzt mir das Programm ab

Am besten füge ich mal den Bsp.-Code hinzu, damit ihr seht was ich meine.
main.pb
Code: Alles auswählen
IncludeFile "Global.pbi"
IncludeFile "GUI.pbi"
ProcedureDLL init()
loadFramework()
EndProcedure
ProcedureDLL sync(flag.l)
CreateThread(@validateWindowState(), flag)
EndProcedure
Code: Alles auswählen
#MAIN_WND = 2
#WEB_WND = 1
#FLAGS = #PB_Window_SystemMenu | #PB_Window_ScreenCentered
Declare crtPopupMenu()
Declare crtSysTray()
Declare crtWindow()
Declare validateWindowState(flag.l)
Declare loadFramework()
Declare windowHandler()
Code: Alles auswählen
IncludeFile "Global.pbi"
Procedure windowHandler()
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_CloseWindow
Quit = 1
CloseWindow(#MAIN_WND)
EndIf
Until Quit = 1
EndProcedure
Procedure crtWindow()
If OpenWindow(#MAIN_WND, 0, 0, 500, 500, "test", #FLAGS)
WebGadget(#WEB_WND, 1, 1, 499, 499, "http://www.heise.de")
windowHandler()
EndIf
EndProcedure
Procedure validateWindowState(flag.l)
If WindowID(#MAIN_WND)
; window is valid and initialized
If IsGadget(#WEB_WND)
SetGadgetState(#WEB_WND, #PB_Web_Refresh) ; UND GENAU HIER CRASHED ES DANN!!
EndIf
Else
; window does not exist, create new one
crtWindow()
EndIf
EndProcedure
Procedure loadFramework()
crtWindow()
EndProcedure
Hm ... ich stehe da zur Zeit ein wenig aufm Schlauch und wäre dankbar für jede Hilfe.
VG,
Daniel
PS Wenn ich ein einfaches Programm in PB mit dem Refresh ausführe, funktioniert es einwandfrei.
Code: Alles auswählen
If OpenWindow(0, 0, 0, 500, 500, "test", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
WebGadget(1, 10, 30, 499, 499, "http://heise.de")
ButtonGadget(2, 1, 1, 100, 20, "Refresh")
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_CloseWindow
Quit = 1
CloseWindow(0)
EndIf
If Event = #PB_Event_Gadget
Select EventGadget()
Case 2
SetGadgetState(1, #PB_Web_Refresh)
EndSelect
EndIf
Until Quit = 1
EndIf