Page 1 of 1

ExecWB makes app quit for no obvious reason

Posted: Wed Dec 11, 2019 10:06 pm
by BarryG
I was testing this code for another user, but clicking the button just ends the app for no obvious reason.

Code: Select all

OpenWindow(0, 100, 100, 440, 380, "", #PB_Window_SizeGadget |#PB_Window_SystemMenu)

ButtonGadget(1,60,60,200,30,"Show properties...")
TextGadget(12, 20, 20, 200, 20, "TEST")
WebGadget(3,40, 120, 300, 200, "https://www.bing.com/")

webBrowser.IWebBrowser2 = GetWindowLong_(GadgetID(3), #GWL_USERDATA)

Procedure ShowProperties(null)
  webBrowser.IWebBrowser2 = GetWindowLong_(GadgetID(3), #GWL_USERDATA)
  WebBrowser\ExecWB( 10, 1, 0, 0)
EndProcedure

Repeat
  Select WaitWindowEvent()
      
    Case #PB_Event_Gadget
      If EventGadget() = 1
        CreateThread(@ShowProperties(),0)
      EndIf
      
    Case #PB_Event_SizeWindow : 
      ResizeGadget(12,WindowWidth(0) - 100, 50, 200,20)
      ResizeGadget(3, 40, 120, WindowWidth(0) - 60, 200)
      
    Case #PB_Event_CloseWindow : End
  EndSelect
ForEver

Re: ExecWB makes app quit for no obvious reason

Posted: Wed Dec 11, 2019 11:26 pm
by Fred
if you are on Windows 64bit, you need to use GetWindowLongPtr_() instead

Re: ExecWB makes app quit for no obvious reason

Posted: Thu Dec 12, 2019 5:29 am
by Paul
Works if you don't call it as a Thread...

Code: Select all

#OLECMDID_PROPERTIES      =10
#OLECMDEXECOPT_PROMPTUSER =1

OpenWindow(0, 100, 100, 440, 380, "", #PB_Window_SizeGadget |#PB_Window_SystemMenu)

ButtonGadget(1,60,60,200,30,"Show properties...")
TextGadget(12, 20, 20, 200, 20, "TEST")
WebGadget(3,40, 120, 300, 200, "https://www.bing.com/")

webBrowser.IWebBrowser2 = GetWindowLong_(GadgetID(3), #GWL_USERDATA)

Procedure ShowProperties(null)
  webBrowser.IWebBrowser2 = GetWindowLong_(GadgetID(3), #GWL_USERDATA)
  WebBrowser\ExecWB( #OLECMDID_PROPERTIES, #OLECMDEXECOPT_PROMPTUSER, 0,0)
EndProcedure

Repeat
  Select WaitWindowEvent()
     
    Case #PB_Event_Gadget
      If EventGadget() = 1
        ShowProperties(0)   ;<-------------------------
        ;CreateThread(@ShowProperties(),0)
      EndIf
     
    Case #PB_Event_SizeWindow :
      ResizeGadget(12,WindowWidth(0) - 100, 50, 200,20)
      ResizeGadget(3, 40, 120, WindowWidth(0) - 60, 200)
     
    Case #PB_Event_CloseWindow : End
  EndSelect
ForEver

Re: ExecWB makes app quit for no obvious reason

Posted: Thu Dec 12, 2019 8:17 am
by BarryG
Fred wrote:if you are on Windows 64bit, you need to use GetWindowLongPtr_() instead
Thanks Fred; I did that and now I see that it's due to an illegal memory access error. Thanks!

Paul: The idea was to try it in a thread to see if the Properties window could be opened as non-modal. See here: viewtopic.php?f=13&t=74185