Re: Updated Webgadget on Windows
Posted: Sun May 08, 2022 12:53 am
+1
http://www.purebasic.com
https://www.purebasic.fr/english/
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
We have seen it, but must be part of pb dustrubution itselfinfratec wrote: Tue Jan 10, 2023 2:25 pm Maybe someone have not seen it:
I created a WebView2Gadget():
viewtopic.php?p=592281#p592281