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
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