Updated Webgadget on Windows

Got an idea for enhancing PureBasic? New command(s) you'd like to see?
ehowington
Enthusiast
Enthusiast
Posts: 114
Joined: Sat Sep 12, 2009 3:06 pm

Re: Updated Webgadget on Windows

Post by ehowington »

+1
User avatar
Kwai chang caine
Always Here
Always Here
Posts: 5342
Joined: Sun Nov 05, 2006 11:42 pm
Location: Lyon - France

Re: Updated Webgadget on Windows

Post by Kwai chang caine »

I agree all you say, i need that too :wink:
And why not also a return to the Firefox engine as in older versions ? :|
ImageThe happiness is a road...
Not a destination
xpectmore
User
User
Posts: 15
Joined: Thu Jul 29, 2021 12:52 pm

Re: Updated Webgadget on Windows

Post by xpectmore »

assuming nobody will use these lines of codes to write viruses, this code is from this forum and you find the links inside the code ..

web gadget + html 5 , on my win 10 x64 22h2 , with "Microsoft edge webview2 runtime" installed (https://developer.microsoft.com/en-us/m ... /webview2/)

so the fallowing compose code works well here:

Code: Select all

;DOCUMENTATION
;https://www.purebasic.fr/english/viewtopic.php?f=5&t=56157
;http://forums.purebasic.com/german/viewtopic.php?p=355092



;1)https://www.purebasic.fr/english/viewtopic.php?f=5&t=56157
Procedure SetFeature_Browser_Emulation() 
  Protected lpValueName.s,lpData.l,phkResult,lpsdata.s
  lpValueName.s = GetFilePart(ProgramFilename()) 
  lpData = 11001  
  If RegCreateKeyEx_(#HKEY_CURRENT_USER, "SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", 0, #Null, #REG_OPTION_VOLATILE, #KEY_ALL_ACCESS, #Null, @phkResult, @lpdwDisposition) = #ERROR_SUCCESS
    RegSetValueEx_(phkResult, lpValueName, 0, #REG_DWORD, @lpData, SizeOf(LONG))
    RegCloseKey_(phkResult)
  EndIf
    
EndProcedure 

Procedure DelFeature_Browser_Emulation() 
  Protected phkResult,lpValueName.s  
  lpValueName.s = GetFilePart(ProgramFilename()) 
  If RegOpenKeyEx_(#HKEY_CURRENT_USER, "SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", 0, #KEY_SET_VALUE, @phkResult) = #ERROR_SUCCESS
    RegDeleteValue_(phkResult, lpValueName)
    RegCloseKey_(phkResult)
  EndIf
EndProcedure 


;uncommenting these for fun then comment them back after DA run
;DelFeature_Browser_Emulation()
;End






;2)http://forums.purebasic.com/german/viewtopic.php?p=355092
; HTML 5 Browser zeigt Bilder nicht
; just a simple purebasic html5 web browser by inc.aka udg
; 
; including home button, forward, back, reload/ refresh, close
; address url field, page load progress bar
;
; PB 5.30 Windows 7
;
;{ Keyboard Shortcut Enumerations
Enumeration 1
  #OLECMDID_OPEN
  #OLECMDID_NEW
  #OLECMDID_SAVE
  #OLECMDID_SAVEAS
  #OLECMDID_SAVECOPYAS
  #OLECMDID_PRINT
  #OLECMDID_PRINTPREVIEW
  #OLECMDID_PAGESETUP
  #OLECMDID_SPELL
  #OLECMDID_PROPERTIES
  #OLECMDID_CUT
  #OLECMDID_COPY
  #OLECMDID_PASTE
  #OLECMDID_PASTESPECIAL
  #OLECMDID_UNDO
  #OLECMDID_REDO
  #OLECMDID_SELECTALL
  #OLECMDID_CLEARSELECTION
  #OLECMDID_ZOOM
  #OLECMDID_GETZOOMRANGE
  #OLECMDID_UPDATECOMMANDS
  #OLECMDID_REFRESH
  #OLECMDID_STOP
  #OLECMDID_HIDETOOLBARS
  #OLECMDID_SETPROGRESSMAX
  #OLECMDID_SETPROGRESSPOS
  #OLECMDID_SETPROGRESSTXT
  #OLECMDID_SETTITLE
  #OLECMDID_SETDOWNLOADSTATE
  #OLECMDID_STOPDOWNLOAD
  
EndEnumeration

Enumeration 0
  #OLECMDEXECOPT_DODEFAULT
  #OLECMDEXECOPT_PROMPTUSER
  #OLECMDEXECOPT_DONTPROMPTUSER
  #OLECMDEXECOPT_SHOWHELP
EndEnumeration
;}
Enumeration
  #MainForm
  ;WebGadget
  #WebGadget
  #Btn_CloseWebGadget
  #Btn_min_to_Tray
  #Btn_Fnt_min_to_Tray
  #Font_Btn_CloseWebGadget
  #Btn_Reload
  #Font_Btn_Reload
  #Btn_Nav_Back
  #Font_Btn_Nav_Back
  #Btn_Nav_Frwd
  #Font_Btn_Nav_Frwd
  #Show_Current_Url
  #Show_Current_back
  #Font_Current_Url
  #Btn_Start_Browsing
  #Btn_Home
  #Font_Start_Browsing
  #Separater
  #Separater2
  #Separater3
  #ProgressBar
  #Txt_Browser
EndEnumeration

;Image Plugins
UsePNGImageDecoder()

Define Event

Global WebObject.IWebBrowser2
; load a URL on start and set it as default
;Global Url.s="http://www.google.com"
Global Url.s="https://maps.google.com"
; define home button URL
Global HomeUrl.s=Url
;move window- hold left mouse trigger down
Procedure WinCallback(hWnd, uMsg, wParam, lParam)
  Protected result = #PB_ProcessPureBasicEvents
  Select uMsg
      
    Case #WM_LBUTTONDOWN
      SendMessage_(hWnd, #WM_NCLBUTTONDOWN, #HTCAPTION, 0)
      
  EndSelect
  ProcedureReturn result
EndProcedure

;- Read current URL
Procedure NavigationCallback(Gadget, NewUrl.s)
  
  If NewUrl <> Url
    ;SetGadgetText(#Show_Current_Url, GetGadgetText(#Webgadget)
    SetGadgetText(#Show_Current_Url, NewUrl)
    Url = NewUrl
  EndIf
  ProcedureReturn #PB_ProcessPureBasicEvents
  
EndProcedure

Procedure SuppressJavaScriptErrorMessages(WebGadget)
  
  Protected MyWebGadget.IWebBrowser2
  
  MyWebGadget = GetWindowLongPtr_(GadgetID(#Webgadget), #GWL_USERDATA)
  MyWebGadget\put_Silent(#True) ; Suppress JavaScript error messages.
  
EndProcedure

Procedure MainFormShow()
  hwnd=OpenWindow(#MainForm, 0, 0, 1280, 770,"WebGadget",#PB_Window_ScreenCentered|#PB_Window_BorderLess|#PB_Window_Maximize)
  SetWindowColor(#MainForm, RGB(15, 124, 15))
  
  ; show current URL in Address - Input-Field
  TextGadget(#Show_Current_back, 127, 0, 503, 31," ")
  SetGadgetColor(#Show_Current_back, #PB_Gadget_BackColor, RGB(11, 96, 13)) ;TXT Background Color
  StringGadget(#Show_Current_Url, 130, 7, 500, 20, Url, #PB_String_BorderLess)
  SetGadgetColor(#Show_Current_Url, #PB_Gadget_FrontColor, RGB(255, 255, 255));TXT Color
  SetGadgetColor(#Show_Current_Url, #PB_Gadget_BackColor, RGB(11, 96, 13))    ;TXT Background Color
  SetGadgetFont(#Show_Current_Url, LoadFont(#Font_Current_Url, "Lucida", 10, #PB_Font_HighQuality)) ; Button Font
  
  WebGadget(#Webgadget, 1, 37, WindowWidth(#MainForm), 732, Url)
  ProgressBarGadget(#ProgressBar, 1, 32, 1278, 5, 0, 0)
  SuppressJavaScriptErrorMessages(#Webgadget)
  
  ;- Add Keyboard Shortcuts
  WebObject.IWebBrowser2 = GetWindowLongPtr_(GadgetID(#WebGadget),#GWLP_USERDATA)
  AddKeyboardShortcut(#MainForm,#PB_Shortcut_Control|#PB_Shortcut_X,Asc("x"))
  AddKeyboardShortcut(#MainForm,#PB_Shortcut_Control|#PB_Shortcut_C,Asc("c"))
  AddKeyboardShortcut(#MainForm,#PB_Shortcut_Control|#PB_Shortcut_V,Asc("v"))
  AddKeyboardShortcut(#MainForm,#PB_Shortcut_Control|#PB_Shortcut_A,Asc("a"))
  AddKeyboardShortcut(#MainForm,#PB_Shortcut_Control|#PB_Shortcut_Z,Asc("z"))
  AddKeyboardShortcut(#MainForm,#PB_Shortcut_Control|#PB_Shortcut_Y,Asc("y"))
  AddKeyboardShortcut(#MainForm,#PB_Shortcut_Control|#PB_Shortcut_Shift|#PB_Shortcut_Z,Asc("y"))
  AddKeyboardShortcut(#MainForm, #PB_Shortcut_Return,1)
  
  ;- Btn Back
  TextGadget(#Btn_Nav_Back, 0, 0, 30, 31, "<",#SS_CENTERIMAGE|#SS_NOTIFY|#SS_CENTER)
  SetGadgetFont(#Btn_Nav_Back, LoadFont(#Font_Btn_Nav_Back, "Lucida", 10, #PB_Font_HighQuality))  ; Button Font
  SetGadgetColor(#Btn_Nav_Back, #PB_Gadget_BackColor, RGB(15, 124, 15))                           ;TXT Background Color
  SetGadgetColor(#Btn_Nav_Back, #PB_Gadget_FrontColor, RGB(255, 255, 255))                        ;TXT Color
  
  ;- Separator
  TextGadget(#Separater, 31, 6, 1, 18, "")
  SetGadgetColor(#Separater, #PB_Gadget_BackColor, RGB(31, 77, 106)) ;TXT Background Color  
  
  ;- Btn Forward
  TextGadget(#Btn_Nav_Frwd, 32, 0, 30, 31, ">",#SS_CENTERIMAGE|#SS_NOTIFY|#SS_CENTER)
  SetGadgetFont(#Btn_Nav_Frwd, LoadFont(#Font_Btn_Nav_Frwd, "Lucida", 10, #PB_Font_HighQuality))  ; Button Font
  SetGadgetColor(#Btn_Nav_Frwd, #PB_Gadget_BackColor, RGB(15, 124, 15))                           ;TXT Background Color
  SetGadgetColor(#Btn_Nav_Frwd, #PB_Gadget_FrontColor, RGB(255, 255, 255))                        ;TXT Color
  
  ;- Btn Reload
  TextGadget(#Btn_Reload, 60, 0, 60, 31, "refresh",#SS_CENTERIMAGE|#SS_NOTIFY|#SS_CENTER)
  SetGadgetFont(#Btn_Reload, LoadFont(#Font_Btn_Reload, "Lucida", 10, #PB_Font_HighQuality))  ; Button Font
  SetGadgetColor(#Btn_Reload, #PB_Gadget_BackColor, RGB(15, 124, 15))                         ;TXT Background Color
  SetGadgetColor(#Btn_Reload, #PB_Gadget_FrontColor, RGB(255, 255, 255))                      ;TXT Color
  
  ;- Btn Start Browsing 
  TextGadget(#Btn_Start_Browsing, 635, 0, 20, 31, ">>",#SS_CENTERIMAGE|#SS_NOTIFY|#SS_CENTER)
  SetGadgetFont(#Btn_Start_Browsing, LoadFont(#Font_Start_Browsing, "Lucida", 10, #PB_Font_HighQuality))  ; Button Font
  SetGadgetColor(#Btn_Start_Browsing, #PB_Gadget_BackColor, RGB(15, 124, 15))                             ;TXT Background Color
  SetGadgetColor(#Btn_Start_Browsing, #PB_Gadget_FrontColor, RGB(255, 255, 255))                          ;TXT Color
  
  ;- Separator2
  TextGadget(#Separater2, 670, 6, 1, 18, "")
  SetGadgetColor(#Separater2, #PB_Gadget_BackColor, RGB(31, 77, 106)) ;TXT Background Color      
  
  ;- Btn Home
  TextGadget(#Btn_Home, 680, 0, 50, 31, "home",#SS_CENTERIMAGE|#SS_NOTIFY|#SS_CENTER)
  SetGadgetFont(#Btn_Home, LoadFont(#Font_Start_Browsing, "Lucida", 10, #PB_Font_HighQuality))  ; Button Font
  SetGadgetColor(#Btn_Home, #PB_Gadget_BackColor, RGB(15, 124, 15))                             ;TXT Background Color
  SetGadgetColor(#Btn_Home, #PB_Gadget_FrontColor, RGB(255, 255, 255))                          ;TXT Color
  
  ;- TxT: Browser by inc in 2k16
  TextGadget(#Txt_Browser, 1000, 0, 250, 31, "Browser by inc in 2k16",#SS_CENTERIMAGE)     ;x;y;länge;höhe
  SetGadgetFont(#Btn_Nav_Frwd, LoadFont(#Font_Btn_Nav_Frwd, "Lucida", 10, #PB_Font_HighQuality))  ; Button Font
  SetGadgetColor(#Txt_Browser, #PB_Gadget_FrontColor, RGB(13, 82, 16))                            ;TEXT FARBE
  SetGadgetColor(#Txt_Browser, #PB_Gadget_BackColor, RGB(15, 124, 15))                            ;Hintergrund FARBE
  
  ;- Btn Close WEbGadget Window
  TextGadget(#Btn_CloseWebGadget, 1220, 0, 60, 31, "close",#SS_CENTERIMAGE|#SS_NOTIFY|#SS_CENTER)
  SetGadgetFont(#Btn_CloseWebGadget, LoadFont(#Btn_CloseWebGadget, "Lucida", 10, #PB_Font_HighQuality))  ; Button Font
  SetGadgetColor(#Btn_CloseWebGadget, #PB_Gadget_BackColor, RGB(15, 124, 15))                            ;TXT Background Color
  SetGadgetColor(#Btn_CloseWebGadget, #PB_Gadget_FrontColor, RGB(255, 255, 255))                         ;TXT Color
  
  ;- Separator3
  TextGadget(#Separater3, 1217, 6, 1, 18, "")
  SetGadgetColor(#Separater3, #PB_Gadget_BackColor, RGB(31, 77, 106)) ;TXT Background Color      
  
  ;- Btn minimize to tray
  TextGadget(#Btn_min_to_Tray, 1186, 0, 20, 31, "__",#SS_CENTERIMAGE|#SS_NOTIFY|#SS_CENTER)
  SetGadgetFont(#Btn_min_to_Tray, LoadFont(#Btn_Fnt_min_to_Tray, "Lucida", 10, #PB_Font_HighQuality))  ; Button Font
  SetGadgetColor(#Btn_min_to_Tray, #PB_Gadget_BackColor, RGB(15, 124, 15))                             ;TXT Background Color
  SetGadgetColor(#Btn_min_to_Tray, #PB_Gadget_FrontColor, RGB(255, 255, 255))                          ;TXT Color    
  
  myBrowser.IWebBrowser2 = GetWindowLong_(GadgetID(#WebGadget), #GWL_USERDATA) ;callback for Keyboard shortcuts
  SetGadgetAttribute(#WebGadget, #PB_Web_NavigationCallback, @NavigationCallback())
EndProcedure

SetWindowCallback(@WinCallback())

SetFeature_Browser_Emulation() ;   <----and the rabbit ###########
Delay(5)
MainFormShow()

; MAIN
Repeat
  Event = WaitWindowEvent()
  EventGadget = EventGadget()
  EventType = EventType()
  
  ;display progressbar load status
  Select Event
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #WebGadget
          Select EventType()
            Case #PB_EventType_DownloadStart
            Case #PB_EventType_DownloadProgress
              SetGadgetAttribute(#ProgressBar, #PB_ProgressBar_Maximum, GetGadgetAttribute(#WebGadget, #PB_Web_ProgressMax))
              SetGadgetState(#ProgressBar, GetGadgetAttribute(#WebGadget, #PB_Web_Progress))
            Case #PB_EventType_DownloadEnd
          EndSelect
      EndSelect
  EndSelect 
  
  ;- Button Functions  
  If Event = #PB_Event_Gadget
    Select EventGadget()
        
        ;- BTN CloseWebGadget     
      Case #Btn_CloseWebGadget
        CloseWindow(#MainForm)
        
        ;- Web Navigation - Back - Forward - Reload - Browse - Home
      Case #Btn_Nav_Back
        SetGadgetState(#WebGadget, #PB_Web_Back)
      Case #Btn_Nav_Frwd
        SetGadgetState(#WebGadget, #PB_Web_Forward)
      Case #Btn_Reload
        SetGadgetState(#WebGadget, #PB_Web_Refresh)
      Case #Btn_Start_Browsing
        ; SetGadgetText(#Webgadget, GetGadgetText(#Show_Current_Url))
        SetGadgetText(#Show_Current_Url, GetGadgetText(#Webgadget))
      Case #Btn_Home
        SetGadgetText(#Webgadget, HomeUrl)
      Case #Btn_min_to_Tray
        SetWindowState(#MainForm, #PB_Window_Minimize)
        
    EndSelect
  EndIf
  
  ; KeyboardShortcuts
  Select Event
    Case #PB_Event_Menu
      Select EventMenu()
        Case 'c'
          WebObject\ExecWB(#OLECMDID_COPY,#OLECMDEXECOPT_DONTPROMPTUSER,0,0)
        Case 'v'
          WebObject\ExecWB(#OLECMDID_PASTE,#OLECMDEXECOPT_DONTPROMPTUSER,0,0)  
        Case 1
          ; SetGadgetText(#Webgadget, GetGadgetText(#Show_Current_Url))
          SetGadgetText(#Show_Current_Url, GetGadgetText(#Webgadget))
      EndSelect
  EndSelect  
  
Until IsWindow(#MainForm)=0 And IsWindow(Fenster_ID)=0
infratec
Always Here
Always Here
Posts: 6817
Joined: Sun Sep 07, 2008 12:45 pm
Location: Germany

Re: Updated Webgadget on Windows

Post by infratec »

Maybe someone have not seen it:

I created a WebView2Gadget():
viewtopic.php?p=592281#p592281
xpectmore
User
User
Posts: 15
Joined: Thu Jul 29, 2021 12:52 pm

Re: Updated Webgadget on Windows

Post by xpectmore »

maybe that someone he did,also sow webview2 chromium too and he avoid to use dlls or complicated stuff that using callbacks and freeze the screen and use more cpu then spare too much energy ,in a co2 crisis..
good work that anyway !
we need simple software that not harm the environment !
take a ride with asp then with php (not oop) to understand the differences
plouf
Enthusiast
Enthusiast
Posts: 250
Joined: Fri Apr 25, 2003 6:35 pm
Location: Athens,Greece

Re: Updated Webgadget on Windows

Post by plouf »

infratec wrote: Tue Jan 10, 2023 2:25 pm Maybe someone have not seen it:

I created a WebView2Gadget():
viewtopic.php?p=592281#p592281
We have seen it, but must be part of pb dustrubution itself
Maybe adding your as official lib ?
Christos
User avatar
SPH
Enthusiast
Enthusiast
Posts: 268
Joined: Tue Jan 04, 2011 6:21 pm

Re: Updated Webgadget on Windows

Post by SPH »

+1 for modernity
http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Portable LENOVO ideapad 110-17ACL 64 bits
Version de PB : 5.73LTS - 32 bits
Post Reply