PB.Ex WebGadget (Windows) (WebKit)

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

PB.Ex WebGadget (Windows) (WebKit)

Beitrag von RSBasic »

Hallo,

wenn man das WebGadget benutzen möchte, dann hat man unter Windows immer das Problem, dass standardmäßig Internet Explorer 7 benutzt wird.
Mit Internet Explorer 7 kann man viele Websiten nicht ohne Javascript-Fehler anzeigen. Auch HTML5 und CSS3 werden nicht unterstützt.
Es ist immer notwendig, eine Einstellung in die Registry für das eigene Programm zu erstellen.

Unter Linux hat man das Problem nicht, weil dort die WebKit-Engine benutzt wird.
Wenn man unter Windows ebenfalls die WebKit-Engine verwenden möchte, kann man meine Bibliothek benutzen und jede moderne Website ohne Fehler anzeigen.

Funktionen:
  • WebGadgetEx()
    • Syntax:

      Code: Alles auswählen

      Result = WebGadgetEx(ID, X, Y, Width, Height, URL$, ParentWindowID, @ErrorOutput$)
    • Beschreibung: Erstellt ein WebGadget mit der WebKit-Engine.
    • Parameter:
      1. ID: Eine eindeutige Nummer für das Gadget. #PB_Any kann verwendet werden, um die Nummer automatisch zu generieren.
      2. X: Legt die Position fest.
      3. Y: Legt die Position fest.
      4. Width: Legt die Breite fest.
      5. Height: Legt die Höhe fest.
      6. URL$: Die Adresse der Website, die geöffnet werden soll.
      7. ParentWindowID: Legt das Ziel-Fenster fest, in dem das Gadget erstellt wird.
      8. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich. Falls #PB_Any verwendet wird, dann wird die ID zurückgegeben.
    • Beispielcode:

      Code: Alles auswählen

      EnableExplicit
      
      Global PBEx_WebGadget
      
      #PBEx_WebGadgetEx_Version$ = "1.1.5.0"
      #PB_Web_Zoom = 100
      #PB_Web_EnableDrop = 101
      #PB_Web_StatusCode = 9
      #PB_Web_AllText = 5
      #PB_Web_SelectAll = 5
      #PB_Web_Print = 6
      
      CompilerIf #PB_Compiler_Processor = #PB_Processor_x86
        PBEx_WebGadget = OpenLibrary(#PB_Any, "PB.Ex_WebGadget_x86.dll")
      CompilerElseIf #PB_Compiler_Processor = #PB_Processor_x64
        PBEx_WebGadget = OpenLibrary(#PB_Any, "PB.Ex_WebGadget_x64.dll")
      CompilerEndIf
      
      If PBEx_WebGadget
        Prototype WebGadgetEx(ID, X, Y, Width, Height, URL.p-Unicode, ParentWindowID, ErrorOutput)
        Global WebGadgetEx.WebGadgetEx = GetFunction(PBEx_WebGadget, "WebGadgetEx")
        Prototype SetWebGadgetExText(ID, URL.p-Unicode, ErrorOutput)
        Global SetWebGadgetExText.SetWebGadgetExText = GetFunction(PBEx_WebGadget, "SetWebGadgetExText")
        Prototype GetWebGadgetExText(ID, Output, ErrorOutput)
        Global GetWebGadgetExText.GetWebGadgetExText = GetFunction(PBEx_WebGadget, "GetWebGadgetExText")
        Prototype SetWebGadgetExState(ID, State, ErrorOutput)
        Global SetWebGadgetExState.SetWebGadgetExState = GetFunction(PBEx_WebGadget, "SetWebGadgetExState")
        Prototype SetWebGadgetExItemText(ID, Entry, Text.p-Unicode, ErrorOutput)
        Global SetWebGadgetExItemText.SetWebGadgetExItemText = GetFunction(PBEx_WebGadget, "SetWebGadgetExItemText")
        Prototype GetWebGadgetExItemText(ID, Entry, Output, ErrorOutput)
        Global GetWebGadgetExItemText.GetWebGadgetExItemText = GetFunction(PBEx_WebGadget, "GetWebGadgetExItemText")
        Prototype FreeWebGadgetEx(ID, ErrorOutput)
        Global FreeWebGadgetEx.FreeWebGadgetEx = GetFunction(PBEx_WebGadget, "FreeWebGadgetEx")
        Prototype IsWebGadgetEx(ID, ErrorOutput)
        Global IsWebGadgetEx.IsWebGadgetEx = GetFunction(PBEx_WebGadget, "IsWebGadgetEx")
        Prototype WebGadgetExWidth(ID, ErrorOutput)
        Global WebGadgetExWidth.WebGadgetExWidth = GetFunction(PBEx_WebGadget, "WebGadgetExWidth")
        Prototype WebGadgetExHeight(ID, ErrorOutput)
        Global WebGadgetExHeight.WebGadgetExHeight = GetFunction(PBEx_WebGadget, "WebGadgetExHeight")
        Prototype WebGadgetExX(ID, ErrorOutput)
        Global WebGadgetExX.WebGadgetExX = GetFunction(PBEx_WebGadget, "WebGadgetExX")
        Prototype WebGadgetExY(ID, ErrorOutput)
        Global WebGadgetExY.WebGadgetExY = GetFunction(PBEx_WebGadget, "WebGadgetExY")
        Prototype WebGadgetExID(ID, ErrorOutput)
        Global WebGadgetExID.WebGadgetExID = GetFunction(PBEx_WebGadget, "WebGadgetExID")
        Prototype HideWebGadgetEx(ID, State, ErrorOutput)
        Global HideWebGadgetEx.HideWebGadgetEx = GetFunction(PBEx_WebGadget, "HideWebGadgetEx")
        Prototype ResizeWebGadgetEx(ID, X, Y, Width, Height, ErrorOutput)
        Global ResizeWebGadgetEx.ResizeWebGadgetEx = GetFunction(PBEx_WebGadget, "ResizeWebGadgetEx")
        Prototype HideWebGadgetExDevTools(ID, State, ErrorOutput)
        Global HideWebGadgetExDevTools.HideWebGadgetExDevTools = GetFunction(PBEx_WebGadget, "HideWebGadgetExDevTools")
        Prototype ExecuteWebGadgetExJavaScript(ID, Code.p-Unicode, Output, ErrorOutput)
        Global ExecuteWebGadgetExJavaScript.ExecuteWebGadgetExJavaScript = GetFunction(PBEx_WebGadget, "ExecuteWebGadgetExJavaScript")
        Prototype BindWebGadgetExJavaScript(ID, PBProcedureName.p-Unicode, PBProcedureHandle, PID, ErrorOutput)
        Global BindWebGadgetExJavaScript.BindWebGadgetExJavaScript = GetFunction(PBEx_WebGadget, "BindWebGadgetExJavaScript")
        Prototype GetWebGadgetExAttribute(ID, Attribute, ErrorOutput)
        Global GetWebGadgetExAttribute.GetWebGadgetExAttribute = GetFunction(PBEx_WebGadget, "GetWebGadgetExAttribute")
        Prototype SetWebGadgetExAttribute(ID, Attribute, Value, ErrorOutput)
        Global SetWebGadgetExAttribute.SetWebGadgetExAttribute = GetFunction(PBEx_WebGadget, "SetWebGadgetExAttribute")
        Prototype EnableRemoteDebugger(Port, ErrorOutput)
        Global EnableRemoteDebugger.EnableRemoteDebugger = GetFunction(PBEx_WebGadget, "EnableRemoteDebugger")
        Prototype SetWebGadgetExSetUserAgent(UserAgent.p-Unicode, ErrorOutput)
        Global SetWebGadgetExSetUserAgent.SetWebGadgetExSetUserAgent = GetFunction(PBEx_WebGadget, "SetWebGadgetExSetUserAgent")
        Prototype SetWebGadgetExProxy(Proxy.p-Unicode, ErrorOutput)
        Global SetWebGadgetExProxy.SetWebGadgetExProxy = GetFunction(PBEx_WebGadget, "SetWebGadgetExProxy")
        
      EndIf
      
      Define Output$ = Space(1000000)
      Define ErrorOutput$ = Space(128)
      Define IsDevTools = #True
      
      Procedure MyJSCallback(aaa)
        Debug "This procedure was executed from Javascript: " + PeekS(aaa)
      EndProcedure
      
      If OpenWindow(0, 0, 0, 1500, 1000, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
        ;SetWebGadgetExSetUserAgent("PureBasic Bot", @ErrorOutput$)
        ;SetWebGadgetExProxy("108.61.86.187:8080", @ErrorOutput$);https://www.proxy-list.download/HTTPS
        
        WebGadgetEx(1, 0, DesktopScaledY(60), DesktopScaledX(1500), DesktopScaledY(1000-60), "https://www.rsbasic.de", WindowID(0), @ErrorOutput$)
        ;WebGadgetEx(1, 0, DesktopScaledY(60), DesktopScaledX(1500), DesktopScaledY(1000-60), "https://www.whatismybrowser.com/detect/what-is-my-user-agent", WindowID(0), @ErrorOutput$)
        ;WebGadgetEx(1, 0, DesktopScaledY(60), DesktopScaledX(1500), DesktopScaledY(1000-60), "https://www.google.com", WindowID(0), @ErrorOutput$)
        
        ButtonGadget(2, 0, 0, 70, 30, "Back", 0)
        ButtonGadget(3, 70, 0, 70, 30, "Forward", 0)
        ButtonGadget(4, 140, 0, 70, 30, "Reload", 0)
        ButtonGadget(5, 210, 0, 70, 30, "Stop", 0)
        ButtonGadget(6, 280, 0, 70, 30, "Google", 0)
        ButtonGadget(7, 350, 0, 70, 30, "Own HTML", 0)
        ButtonGadget(8, 420, 0, 70, 30, "Get HTML", 0)
        ButtonGadget(10, 490, 0, 70, 30, "Get URL", 0)
        ButtonGadget(11, 560, 0, 150, 30, "Get size && position", 0)
        ButtonGadget(12, 710, 0, 70, 30, "Get ID", 0)
        ButtonGadget(13, 780, 0, 70, 30, "Hide", 0)
        ButtonGadget(14, 850, 0, 70, 30, "Show", 0)
        ButtonGadget(15, 920, 0, 70, 30, "Size", 0)
        ButtonGadget(16, 990, 0, 150, 30, "Show/Hide DevT.", 0)
        ButtonGadget(17, 1140, 0, 70, 30, "Execute JS", 0)
        ButtonGadget(18, 1210, 0, 70, 30, "BindProc", 0)
        ButtonGadget(19, 1280, 0, 70, 30, "CallProc", 0)
        ButtonGadget(20, 1350, 0, 70, 30, "IsBusy?", 0)
        ButtonGadget(21, 1420, 0, 70, 30, "GetZoom", 0)
        ButtonGadget(22, 0, 30, 70, 30, "Zoom=200", 0)
        ButtonGadget(23, 70, 30, 70, 30, "StatusCode?", 0)
        ButtonGadget(24, 140, 30, 100, 30, "Get selected Text", 0)
        ButtonGadget(25, 240, 30, 70, 30, "Get all Text", 0)
        ButtonGadget(26, 310, 30, 70, 30, "Select all", 0)
        ButtonGadget(27, 380, 30, 70, 30, "Print", 0)
        
        SetWebGadgetExAttribute(1, #PB_Web_EnableDrop, 0, @ErrorOutput$)
        
        Repeat
          Select WaitWindowEvent()
            Case #PB_Event_Gadget
              Select EventGadget()
                Case 2
                  SetWebGadgetExState(1, #PB_Web_Back, @ErrorOutput$)
                Case 3
                  SetWebGadgetExState(1, #PB_Web_Forward, @ErrorOutput$)
                Case 4
                  SetWebGadgetExState(1, #PB_Web_Refresh, @ErrorOutput$)
                Case 5
                  SetWebGadgetExState(1, #PB_Web_Stop, @ErrorOutput$)
                Case 6
                  SetWebGadgetExText(1, "https://www.google.de", @ErrorOutput$)
                Case 7
                  SetWebGadgetExItemText(1, #PB_Web_HtmlCode, "<html><head></head><body><h1>Hello PureBasic Friends!</h1></body></html>", @ErrorOutput$)
                Case 8
                  GetWebGadgetExItemText(1, #PB_Web_HtmlCode, @Output$, @ErrorOutput$)
                  Debug Output$
                Case 10
                  GetWebGadgetExText(1, @Output$, @ErrorOutput$)
                  Debug Output$
                Case 11
                  Debug WebGadgetExWidth(1, @ErrorOutput$)
                  Debug WebGadgetExHeight(1, @ErrorOutput$)
                  Debug WebGadgetExX(1, @ErrorOutput$)
                  Debug WebGadgetExY(1, @ErrorOutput$)
                Case 12
                  Debug WebGadgetExID(1, @ErrorOutput$)
                Case 13
                  HideWebGadgetEx(1, 1, @ErrorOutput$)
                Case 14
                  HideWebGadgetEx(1, 0, @ErrorOutput$)
                Case 15
                  ResizeWebGadgetEx(1, 100, 50, 200, 400, @ErrorOutput$)
                Case 16
                  IsDevTools ! #True
                  HideWebGadgetExDevTools(1, IsDevTools, @ErrorOutput$)
                Case 17
                  ExecuteWebGadgetExJavaScript(1, "document.body.style.backgroundColor = " + Chr(34) + "#ff0000" + Chr(34), @Output$, @ErrorOutput$)
                  ExecuteWebGadgetExJavaScript(1, "document.body.offsetHeight;", @Output$, @ErrorOutput$)
                  Debug Output$
                  ;If you want to run modal dialogs like Alert(), please set the parameter "Output" to 0.
                  ExecuteWebGadgetExJavaScript(1, "alert('Hello');", 0, @ErrorOutput$)
                Case 18
                  BindWebGadgetExJavaScript(1, "MyJSCallback", @MyJSCallback(), GetCurrentProcessId_(), @ErrorOutput$)
                Case 19
                  ExecuteWebGadgetExJavaScript(1, "(async function() { await CefSharp.BindObjectAsync('PBProcedure'); PBProcedure.call('MyJSCallback', 'Hello PureBasic'); })();", @Output$, @ErrorOutput$)
                Case 20
                  Debug GetWebGadgetExAttribute(1, #PB_Web_Busy, @ErrorOutput$)
                Case 21
                  Debug GetWebGadgetExAttribute(1, #PB_Web_Zoom, @ErrorOutput$)
                Case 22
                  SetWebGadgetExAttribute(1, #PB_Web_Zoom, 200, @ErrorOutput$)
                Case 23
                  Debug GetWebGadgetExAttribute(1, #PB_Web_StatusCode, @ErrorOutput$)
                  ;Some status codes:
                  ;0 = No error
                  ;105 = Website not found
                  ;3 = Load aborted
                  ;118 = Timeout
                  ;-All status codes here: https://cefsharp.github.io/api/63.0.0/html/T_CefSharp_CefErrorCode.htm
                Case 24
                  GetWebGadgetExItemText(1, #PB_Web_SelectedText, @Output$, @ErrorOutput$)
                  Debug Output$
                Case 25
                  GetWebGadgetExItemText(1, #PB_Web_AllText, @Output$, @ErrorOutput$)
                  Debug Output$
                Case 26
                  SetWebGadgetExState(1, #PB_Web_SelectAll, @ErrorOutput$)
                Case 27
                  SetWebGadgetExState(1, #PB_Web_Print, @ErrorOutput$)
                
              EndSelect
            Case #PB_Event_CloseWindow
              CloseLibrary(PBEx_WebGadget)
              End
          EndSelect
        ForEver
      EndIf
      
  • SetWebGadgetExText()
    • Syntax:

      Code: Alles auswählen

      Result = SetWebGadgetExText(ID, URL$, @ErrorOutput$)
    • Beschreibung: Die Adresse der Website, die geöffnet werden soll.
    • Parameter:
      1. ID: Die Nummer des erstellten Gadgets.
      2. URL$: Die Adresse der Website, die geöffnet werden soll.
      3. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
  • GetWebGadgetExText()
    • Syntax:

      Code: Alles auswählen

      Result = GetWebGadgetExText(ID, @Output$, @ErrorOutput$)
    • Beschreibung: Ermittelt die aktuelle Adresse der aufgerufenen Website.
    • Parameter:
      1. ID: Die Nummer des erstellten Gadgets.
      2. @Output$: Die Adresse der Website wird in diese Variable gespeichert.
      3. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
  • SetWebGadgetExState()
    • Syntax:

      Code: Alles auswählen

      Result = SetWebGadgetExState(ID, State, @ErrorOutput$)
    • Beschreibung: Führt eine Aktion aus.
    • Parameter:
      1. ID: Die Nummer des erstellten Gadgets.
      2. State: Eine der folgenden Aktionen kann verwendet werden:
        • #PB_Web_Back: Ein Schritt zurück in der Navigations-Historie.
        • #PB_Web_Forward: Ein Schritt vorwärts in der Navigations-Historie.
        • #PB_Web_Refresh: Seite neu laden.
        • #PB_Web_Stop: Vorgang einer Seite, die noch geladen wird, abbrechen.
        • #PB_Web_SelectAll: Markiert alles.
        • #PB_Web_Print: Druckt die Seite.
      3. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
  • SetWebGadgetExItemText()
    • Syntax:

      Code: Alles auswählen

      Result = SetWebGadgetExItemText(ID, Entry, Text$, @ErrorOutput$)
    • Beschreibung: Führt eine Aktion aus.
    • Parameter:
      1. ID: Die Nummer des erstellten Gadgets.
      2. Entry: Eine der folgenden Aktionen kann verwendet werden:
        • #PB_Web_HtmlCode: Ändert den Seiten-Quelltext.
      3. Text$: Der Wert für die Aktion.
      4. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
  • GetWebGadgetExItemText()
    • Syntax:

      Code: Alles auswählen

      Result = GetWebGadgetExItemText(ID, Entry, @Output, @ErrorOutput$)
    • Beschreibung: Führt eine Aktion aus.
    • Parameter:
      1. ID: Die Nummer des erstellten Gadgets.
      2. Entry: Eine der folgenden Aktionen kann verwendet werden:
        • #PB_Web_HtmlCode: Ermittelt den Seiten-Quelltext.
        • #PB_Web_SelectedText: Ermittelt den markierten Text.
        • #PB_Web_AllText: Ermittelt den gesamten Text.
      3. @Output: Der Wert der Aktion wird in die Variable gespeichert.
      4. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
  • FreeWebGadgetEx()
    • Syntax:

      Code: Alles auswählen

      Result = FreeWebGadgetEx(ID, @ErrorOutput$)
    • Beschreibung: Gibt das Gadget frei.
    • Parameter:
      1. ID: Die Nummer des erstellten Gadgets.
      2. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
  • IsWebGadgetEx()
    • Syntax:

      Code: Alles auswählen

      Result = IsWebGadgetEx(ID, @ErrorOutput$)
    • Beschreibung: Überprüft, ob das Gadget noch gültig ist.
    • Parameter:
      1. ID: Die Nummer des erstellten Gadgets.
      2. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Das Gadget ist gültig.
  • WebGadgetExWidth()
    • Syntax:

      Code: Alles auswählen

      Result = WebGadgetExWidth(ID, @ErrorOutput$)
    • Beschreibung: Ermittelt die Breite des Gadgets.
    • Parameter:
      1. ID: Die Nummer des erstellten Gadgets.
      2. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert: Die Breite des Gadgets.
  • WebGadgetExHeight()
    • Syntax:

      Code: Alles auswählen

      Result = WebGadgetExHeight(ID, @ErrorOutput$)
    • Beschreibung: Ermittelt die Höhe des Gadgets.
    • Parameter:
      1. ID: Die Nummer des erstellten Gadgets.
      2. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert: Die Höhe des Gadgets.
  • WebGadgetExX()
    • Syntax:

      Code: Alles auswählen

      Result = WebGadgetExX(ID, @ErrorOutput$)
    • Beschreibung: Ermittelt die Position des Gadgets.
    • Parameter:
      1. ID: Die Nummer des erstellten Gadgets.
      2. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert: Die Position des Gadgets.
  • WebGadgetExY()
    • Syntax:

      Code: Alles auswählen

      Result = WebGadgetExY(ID, @ErrorOutput$)
    • Beschreibung: Ermittelt die Position des Gadgets.
    • Parameter:
      1. ID: Die Nummer des erstellten Gadgets.
      2. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert: Die Position des Gadgets.
  • WebGadgetExID()
    • Syntax:

      Code: Alles auswählen

      Result = WebGadgetExID(ID, @ErrorOutput$)
    • Beschreibung: Ermittelt die Handle-Nummer des erstellten Gadgets. Die Handle-Nummer kann für WinAPI verwendet werden.
    • Parameter:
      1. ID: Die Nummer des erstellten Gadgets.
      2. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert: Die Handle-Nummer des Gadgets.
  • HideWebGadgetEx()
    • Syntax:

      Code: Alles auswählen

      Result = HideWebGadgetEx(ID, State, @ErrorOutput$)
    • Beschreibung: Versteckt oder zeigt das Gadget an.
    • Parameter:
      1. ID: Die Nummer des erstellten Gadgets.
      2. State:
        • 0: Gadget anzeigen.
        • 1: Gadget verstecken.
      3. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
  • ResizeWebGadgetEx()
    • Syntax:

      Code: Alles auswählen

      Result = ResizeWebGadgetEx(ID, X, Y, Width, Height, @ErrorOutput$)
    • Beschreibung: Ändert die Position und Größe des Gadgets.
    • Parameter:
      1. ID: Die Nummer des erstellten Gadgets.
      2. X: Die Position des Gadgets ändern. #PB_Ignore kann verwendet werden, um den Parameter zu ignorieren.
      3. Y: Die Position des Gadgets ändern. #PB_Ignore kann verwendet werden, um den Parameter zu ignorieren.
      4. Width: Die Breite des Gadgets ändern. #PB_Ignore kann verwendet werden, um den Parameter zu ignorieren.
      5. height: Die Höhe des Gadgets ändern. #PB_Ignore kann verwendet werden, um den Parameter zu ignorieren.
      6. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
  • HideWebGadgetExDevTools()
    • Syntax:

      Code: Alles auswählen

      Result = HideWebGadgetExDevTools(ID, State, @ErrorOutput$)
    • Beschreibung: Versteckt oder zeigt die Entwicklungsumgebung an. Damit kann der Quelltext analysiert werden.
    • Parameter:
      1. ID: Die Nummer des erstellten Gadgets.
      2. State:
        • 0: Anzeigen
        • 1: Verstecken
      3. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
  • ExecuteWebGadgetExJavaScript()
    • Syntax:

      Code: Alles auswählen

      Result = ExecuteWebGadgetExJavaScript(ID, Code$, @Output$, @ErrorOutput$)
    • Beschreibung: Führt einen beliebigen Javascript-Code aus. Hinweis: Wenn man modale Dialoge wie Alert() ausführen möchte, dann muss der Parameter "Output" auf 0 gesetzt werden.
    • Parameter:
      1. ID: Die Nummer des erstellten Gadgets.
      2. Code$: Javascript-Code, der ausgeführt werden soll.
      3. @Output$: Falls eine Javascript-Funktion einen Rückgabewert besitzt, dann wird dieser in diese Variable gespeichert. Falls im Javascript-Code ein Fehler existiert, dann wird der Javascript-Fehler in diese Variable gespeichert.
      4. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
  • BindWebGadgetExJavaScript()
    • Syntax:

      Code: Alles auswählen

      Result = BindWebGadgetExJavaScript(ID, PBProcedureName$, PBProcedureHandle, PID, @ErrorOutput$)
    • Beschreibung: Erstellt eine Verknüpfung zwischen PB-Prozedur und Javascript. Damit ist es möglich, aus Javascript eine PB-Prozedur inkl. Parameterübergebe auszuführen.
    • Parameter:
      1. ID: Die Nummer des erstellten Gadgets.
      2. PBProcedureName$: Der Name der auszuführende Prozedur.
      3. PBProcedureHandle: Die Handle-Nummer der auszuführende Prozedur.
      4. PID: Die PID-Nummer des eigenen Programms.
      5. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
  • GetWebGadgetExAttribute()
    • Syntax:

      Code: Alles auswählen

      Result = GetWebGadgetExAttribute(ID, Attribute, @ErrorOutput$)
    • Beschreibung: Ermittelt mit Hilfe des angegebenen Attributs den Wert.
    • Parameter:
      1. ID: Die Nummer des erstellten Gadgets.
      2. Attribute: Eine der folgenden Attribute kann verwendet werden:
        • #PB_Web_Busy: Überprüft, ob die Seite noch lädt.
        • #PB_Web_Zoom: Ermittelt den Zoom-Wert in Prozent.
        • #PB_Web_StatusCode: Ermittelt den Statuscode nach dem Laden der Seite, z.B. Website nicht gefunden oder Timeout.
      3. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert: Wert mit Hilfe des angegebenen Attributs.
  • SetWebGadgetExAttribute()
    • Syntax:

      Code: Alles auswählen

      Result = SetWebGadgetExAttribute(ID, Attribute, Value, @ErrorOutput$)
    • Beschreibung: Ändert mit Hilfe des angegebenen Attributs den Wert.
    • Parameter:
      1. ID: Die Nummer des erstellten Gadgets.
      2. Attribute: Eine der folgenden Attribute kann verwendet werden:
        • #PB_Web_Zoom: Ändert den Zoom-Wert in Prozent.
        • #PB_Web_BlockPopupMenu: Aktiviert oder deaktiviert das Kontextmenü.
        • #PB_Web_EnableDrop: Aktiviert oder deaktiviert die Drop-Funktion.
      3. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
  • EnableRemoteDebugger()
    • Syntax:

      Code: Alles auswählen

      Result = EnableRemoteDebugger(Port, @ErrorOutput$)
    • Beschreibung: Damit kann man die geöffnete Seite auf einem anderen Port mit DevTools debuggen. Es kann nur einmalig pro Prozess vor der Gadgeterstellung aktiviert und verwendet werden. Beispiel-Adresse für Port 8088: http://localhost:8088/
    • Parameter:
      1. Port: Portnummer für das Debuggen einer geöffneten Seite. Die Portnummer muss zwischen 1024 und 65535 liegen.
      2. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
  • SetWebGadgetExSetUserAgent()
    • Syntax:

      Code: Alles auswählen

      Result = SetWebGadgetExSetUserAgent(UserAgent$, @ErrorOutput$)
    • Beschreibung: Ändert den UserAgent-String für das WebGadget. Es kann nur einmalig pro Prozess vor der Gadgeterstellung festgelegt werden.
    • Parameter:
      1. UserAgent$: UserAgent
      2. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
  • SetWebGadgetExProxy()
    • Syntax:

      Code: Alles auswählen

      Result = SetWebGadgetExProxy(Proxy$, @ErrorOutput$)
    • Beschreibung: Ändert den Proxy-Server für das WebGadget. Es kann nur einmalig pro Prozess vor der Gadgeterstellung festgelegt werden.
    • Parameter:
      1. Proxy$: Adresse und Port-Nummer des Proxy-Servers.
      2. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
Systemvoraussetzungen:
  • .NET Framework 4.7.2 oder höher
  • Unicode-Aktivierung (standardmäßig ab PB 5.50)
Lizenz: Diese DLL-Datei basiert auf die Komponente CefSharp und Chromium mit der Version 71.0.3578.98 und ist als BSD lizenziert.
Die Komponente ist kostenlos und darf sowohl privat als auch kommerziell verwendet werden.
Folgende Copyright-Texte müssen mitgeliefert werden:
Copyright © The CefSharp Authors. All rights reserved.
Copyright 2015 The Chromium Authors. All rights reserved.
Copyright © 2019 RSBasic.de
Das Framework CEF (Chromium Embedded Framework) wird auch in vielen anderen Produkten verwendet. Z.B.: GTA Online, Minecraft, Unity3D, Unreal Engine, Amazon Music, Facebook Messenger, ...

Download: https://www.rsbasic.de/downloads/downlo ... Gadget.zip
Bild

Ich würde mich über Feedbacks, Verbesserungsvorschläge, Fehlermeldungen oder Wünsche sehr freuen. Wer mich unterstützen möchte, kann mir auch was kleines spenden. Danke :)

PS: Es ist in der ersten Version noch ein kleiner Fehler drin, der nur manchmal auftritt und zwar kann es passieren, dass die Position und Größe des Gadgets nicht stimmen. Wenn der Fehler bei euch auch auftritt, bitte Bescheid sagen.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
TroaX
Beiträge: 659
Registriert: 08.03.2013 14:27
Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Pop_OS! | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Pop_OS!
Wohnort: NRW
Kontaktdaten:

Re: PB.Ex WebGadget (Windows) (WebKit)

Beitrag von TroaX »

Das ist genial! Ich kann es zwar momentan nicht testen. Aber genau auf sowas warte ich schon ewig und finde weiterhin, das dies zum Standard gehören sollte!

Also vorab schonmal vielen vielen vielen Dank!
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Pop_OS!
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box :lol:
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
Benutzeravatar
Kurzer
Beiträge: 1614
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Re: PB.Ex WebGadget (Windows) (WebKit)

Beitrag von Kurzer »

Moin RSBasic,

geile Sache mit dem Chromium Framework! :allright:

Leider bekomme ich es nicht zum laufen. Ich habe folgendes durchgeführt:
- Aus deinem ZIP die beiden DLL-Dateien nach D:\ entpackt
- Deinen Beispielcode aus dem ersten Post kopiert und in die IDE eingefügt
- Im Beispielcode die Dateinamen an D:\ angepasst "D:\PB.Ex_WebGadget_x86.dll" und "D:\PB.Ex_WebGadget_x64.dll"
- Den Beispielcode unter "D:\Beispielcode.pb" gespeichert
- F5 gedrückt

Das Programm wird compiliert und gestartet ohne dass ein Fenster geöffnet wird. Nach ca. 4 Sekunden erscheint der Dialog "Das mit dem Debugger getestete Executable endete unerwartet"

Der If-Zweig "If PBEx_WebGadget" wird komplett ausgeführt, das konnte ich mittels Debug-Ausgabe testen.
Er knallt dann in Zeile 48 bei "WebGadgetEx(1...) weg.

PS: Nur aus Neugier: Könnte man die nötige DLL als Datasection in ein Programm einbinden und aus dem Memory heraus laden?
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.02 x64, OS: Win 7 Pro x64 & Win 11 x64, Desktopscaling: 125%, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Useralter in 2023: 56 Jahre.
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: PB.Ex WebGadget (Windows) (WebKit)

Beitrag von RSBasic »

Hast du die anderen Dateien (cef.pak, CefSharp.dll, chrome_elf.dll, libcef.dll, ...) ebenfalls kopiert? Die brauchst du unbedingt.
Kurzer hat geschrieben:PS: Nur aus Neugier: Könnte man die nötige DLL als Datasection in ein Programm einbinden und aus dem Memory heraus laden?
Du könntest alle Dateien in deine EXE-Datei inkludieren und vor der Benutzung entpacken.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Kurzer
Beiträge: 1614
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Re: PB.Ex WebGadget (Windows) (WebKit)

Beitrag von Kurzer »

LOL, entschuldige meine Dummheit. :lol:
Nein, die hatte ich nicht ausgepackt. Nun klappts auch einwandfrei. :allright:

Vielen Dank.
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.02 x64, OS: Win 7 Pro x64 & Win 11 x64, Desktopscaling: 125%, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Useralter in 2023: 56 Jahre.
Benutzeravatar
Imhotheb
Beiträge: 192
Registriert: 10.10.2014 13:14
Computerausstattung: Intel 8086, 640 KB RAM, Hercules Video Adapter, 2 x 5 1/4" 360kb Floppy, MS-DOS 3
Wohnort: Wolfenbüttel

Re: PB.Ex WebGadget (Windows) (WebKit)

Beitrag von Imhotheb »

:praise: :praise: :praise:

Vielen Dank
weil einfach einfach einfach ist ... mach' ich es anders
Benutzeravatar
uweb
Beiträge: 461
Registriert: 13.07.2005 08:39

Re: PB.Ex WebGadget (Windows) (WebKit)

Beitrag von uweb »

:allright: Vielen Dank!

Allerdings bekomme ich es auf Anhieb auch nicht ganz zum Laufen.

Ich habe unter Win10 x64 den Inhalt der Zip zusammen mit dem per Copy&Paste übertragenen Beispielprogramm von oben in einen Ordner gespeichert.

Wenn ich PB.Ex_WebGadget.pb unter PB 5.70 x64 aufrufe läuft es.

Das Beispielprogramm meldet aber beim Initialisieren des WebGadgetEx "Das mit dem Debugger getestete Executable endete unerwartet.".

Wenn ich den Quelltext von PB.Ex_WebGadget.pb übertrage bleibt es beim dem Fehler.
Wenn ich aber die PB.Ex_WebGadget.pb-Datei kopiere läuft die Kopie.

Unter x86 bekomme ich auf jeden Fall die Fehlermeldung.
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: PB.Ex WebGadget (Windows) (WebKit)

Beitrag von RSBasic »

Meine Vermutung wäre, dass bei dir in den Compiler-Optionen die Einstellung "Temporäres Executable im Quellcode-Verzeichnis erstellen" nicht aktiviert ist.
Wenn diese Einstellung nicht aktiviert ist, dann wird die EXE-Datei immer im Temp-Ordner erstellt, in dem sich die DLL-Dateien nicht befinden.
Falls der Fehler weiterhin besteht, sag Bescheid.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
uweb
Beiträge: 461
Registriert: 13.07.2005 08:39

Re: PB.Ex WebGadget (Windows) (WebKit)

Beitrag von uweb »

Deine Vermutung war richtig.
Einmal mehr: Vielen Dank !!!
Benutzeravatar
HeX0R
Beiträge: 2954
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Re: PB.Ex WebGadget (Windows) (WebKit)

Beitrag von HeX0R »

x86 funktioniert bei mir nicht, x64 schon.
Ist schon beeindruckend, aber die Dateien, die man da mitliefern müsste sind ganz schön fett!
104MB alleine für die libcef.dll, holla die Waldfee!
Antworten