[AHK 2.0-a131] Passing Data WebView2

Post your working scripts, libraries and tools.
xroot
Posts: 40
Joined: 21 Jun 2019, 08:45

[AHK 2.0-a131] Passing Data WebView2

Post by xroot » 14 Apr 2021, 11:52

Using global variables HostName, and HostObj sets up the Object variant for AddHostObjectToScript.

Passing a sting, integer, and float data to and from AHK WebView2.

Code: Select all

#include webview2.ahk

Show_Data(){
    msgbox Format("JS Date = {:s}`nJS Screen Width = {:d}`nJS PI = {:1.15f}",HostObj.str,HostObj.int,HostObj.ifloat),"JavaScript Data For AHK","iconi"
}

; NavigateToString
NavStr := "
(
    <style>
        .swal-overlay{background-color:blue;}
        .swal-title{color:yellow;}
        .swal-modal{background-color:navy;border:3px solid yellow;}
        .swal-text{font-size:18px;background-color:navy;border:3px solid cyan;color:yellow;}
        .swal-button{color:yellow;border-radius:2px;background-color:navy;font-size:14px;border:2px solid cyan;}
    </style>
    <script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>
    <body bgColor="blue" style="overflow:hidden">
)"

; ExecuteScript
jsCode := "
(
    (async function Run_Script(){
        // get AHK data for javaScript
        var str    = await chrome.webview.hostObjects.AHK.getHostProperty("str");
        var int    = await chrome.webview.hostObjects.AHK.getHostProperty("int");
        var ifloat = await chrome.webview.hostObjects.AHK.getHostProperty("ifloat");
        // display AHK Data from javaScrpt
        await swal("AHK Data From javaScript","AHK Version\t= "+str+"\nAHK Screen Height\t= "+int+"\nAHK PI\t= "+ifloat,"info",{button:"See javaScript Data For AHK"});
        // set javaScript data for AHK
        await chrome.webview.hostObjects.AHK.setHostProperty("str",new Date().toString());
        await chrome.webview.hostObjects.AHK.setHostProperty("int",screen.width);
        await chrome.webview.hostObjects.AHK.setHostProperty("ifloat",Math.PI);
        // display javaScript data from AHK
        await chrome.webview.hostObjects.AHK.Display();
        // exit from AHK from javaScript
        await chrome.webview.hostObjects.AHK.iQuit();
    })();
)"

; AddHostObjectToScript
HostName := "AHK"
HostObj  := {str:A_AHKVERSION,int:A_ScreenHeight,ifloat:Acos(-1),Display:(*)=>Show_Data(),iQuit:(*)=>ExitApp()}

win := Gui("-caption","WebView2 Testing Data Passing")

; Main WebView2 Setup
WebView2_Init

win.Show "w" A_ScreenWidth/2 " h" A_ScreenHeight/2

Esc::ExitApp
Passing Arrays are setup as strings.

Code: Select all

#include WebView2.ahk

Show_Data(){
    arr := StrSplit(HostObj.oarr,",")
    msgbox arr[1] "`n" arr[2] "`n" arr[3],"JavaScript String To AHK Array","iconi"
}

; NavigateToString
NavStr := "
(
    <style>
        .swal-overlay{background-color:blue;}
        .swal-title{color:yellow;}
        .swal-modal{background-color:navy;border:3px solid yellow;}
        .swal-text{font-size:18px;background-color:navy;border:3px solid cyan;color:yellow;}
        .swal-button{color:yellow;border-radius:2px;background-color:navy;font-size:14px;border:2px solid cyan;}
    </style>
    <script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>
    <body bgColor="blue" style="overflow:hidden">
)"

; ExecuteScript
jsCode := "
(
    (async function Run_JS(){
        // AHK string to javaScript array
        var iarr = (await chrome.webview.hostObjects.AHK.getHostProperty("iarr")).split(",");
        // display javaScript array from AHK string data
        await swal("AHK String To JavaScript Array",iarr[0]+"\n"+iarr[1]+"\n"+iarr[2],"info",{button:"See AHK Array Objects"});
        // to fine your edge and javascript version type this:  edge://version  into edge browser search line
        // javaScript string for AHK array
        var oarr = "Js Date = "+(new Date().toString())+",Js Version = V8-8.9.255.24,Edge Version = 89.0.774.75(64-bit)";
        // set javaScript string for AHK array
        await chrome.webview.hostObjects.AHK.setHostProperty("oarr",oarr);
        // display javaScript string as AHK array
        await chrome.webview.hostObjects.AHK.Display();
        // exit from AHK from javaScript
        await chrome.webview.hostObjects.AHK.iQuit();
    })();
)"

; AddHostObjectToScript
HostName := "AHK"
HostObj  := {iarr:"AHK Date = " A_NOWUTC ",AHK Version = " A_AHKVersion ",OS Version = " A_OSVersion
            ,oarr:"",Display:(*)=>Show_Data(),iQuit:(*)=>ExitApp()}

win := Gui("-caption","WebView2 Testing Array Passing")

; Main WebView2 Setup
WebView2_Init

win.Show "w" A_ScreenWidth/2 " h" A_ScreenHeight/2

Esc::ExitApp

swagfag
Posts: 6222
Joined: 11 Jan 2017, 17:59

Re: [AHK 2.0-a131] Passing Data WebView2

Post by swagfag » 14 Apr 2021, 16:38

where is webview2.ahk

xroot
Posts: 40
Joined: 21 Jun 2019, 08:45

Re: [AHK 2.0-a131] Passing Data WebView2

Post by xroot » 15 Apr 2021, 08:19

Here it is.
WebView2.zip
(1.62 KiB) Downloaded 120 times

Post Reply

Return to “Scripts and Functions (v2)”