From d89ac801d89e45ba3c2f3a8794dade5194d6b81b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Lipok?= <11089482+mlipok@users.noreply.github.com> Date: Sun, 8 Mar 2026 14:15:44 +0100 Subject: [PATCH 01/13] Update NetWebView2Lib.au3 - _NetWebView2_IsRegisteredCOMObject() one common endpoint for entire functions --- NetWebView2Lib.au3 | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/NetWebView2Lib.au3 b/NetWebView2Lib.au3 index c911469..e986ca3 100644 --- a/NetWebView2Lib.au3 +++ b/NetWebView2Lib.au3 @@ -243,7 +243,10 @@ EndFunc ;==>_NetWebView2_Initialize ; Description ...: Check if all necessary object are registerd ; Syntax ........: _NetWebView2_IsRegisteredCOMObject() ; Parameters ....: None -; Return values .: True or False +; Return values..: Success - True +; Failure - False and sets @error: +; 1 - error registering "NetWebView2Lib.WebView2Manager" +; 2 - error registering "NetWebView2Lib.WebView2Parser" ; Author ........: mLipok ; Modified ......: ; Remarks .......: @@ -252,16 +255,23 @@ EndFunc ;==>_NetWebView2_Initialize ; Example .......: No ; =============================================================================================================================== Func _NetWebView2_IsRegisteredCOMObject() + Local $iErr = 0, $iExt = 0, $iRet = False ; predefined endpoint results Local $oMyError = ObjEvent("AutoIt.Error", __NetWebView2_fake_COMErrFunc) ; Local COM Error Handler #forceref $oMyError ObjCreate("NetWebView2Lib.WebView2Manager") - If @error Then Return SetError(1, 0, False) - - ObjCreate("NetWebView2Lib.WebView2Parser") - If @error Then Return SetError(2, 0, False) + If @error Then + $iErr = 1 + Else + ObjCreate("NetWebView2Lib.WebView2Parser") + If @error Then + $iErr = 2 + Else + $iRet = True + EndIf + EndIf - Return True + Return SetError($iErr, $iExt, $iRet) ; one common endpoint for entire functions EndFunc ;==>_NetWebView2_IsRegisteredCOMObject ; #FUNCTION# ==================================================================================================================== @@ -2401,3 +2411,4 @@ EndFunc ;==>__NetWebView2_Events__FrameKeeper #EndRegion ; === NetWebView2Lib UDF === EVENT HANDLERS * #TODO === #EndRegion ; === NetWebView2Lib UDF === EVENT HANDLERS === Collection === + From e1c604074e11267a05631ab9d195ddb5bcfb3868 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Lipok?= <11089482+mlipok@users.noreply.github.com> Date: Sat, 21 Mar 2026 22:13:09 +0100 Subject: [PATCH 02/13] Update NetWebView2Lib.au3 --- NetWebView2Lib.au3 | 534 +++++++++++++++++++++++++++++++-------------- 1 file changed, 365 insertions(+), 169 deletions(-) diff --git a/NetWebView2Lib.au3 b/NetWebView2Lib.au3 index cd9caca..f7d9e35 100644 --- a/NetWebView2Lib.au3 +++ b/NetWebView2Lib.au3 @@ -142,27 +142,33 @@ Global Enum _ ; Indicates the reason for the process failure. ; =============================================================================================================================== Func _NetWebView2_CreateManager($sUserAgent = '', $s_fnEventPrefix = "", $s_AddBrowserArgs = "", $bVerbose = False) Local Const $s_Prefix = "[_NetWebView2_CreateManager]: fnEventPrefix=" & $s_fnEventPrefix & " AddBrowserArgs=" & $s_AddBrowserArgs + Local $ERR = 0, $EXT = 0, $RET = False, $MSG = "" ; predefined endpoint results Local $oMyError = ObjEvent("AutoIt.Error", __NetWebView2_COMErrFunc) ; Local COM Error Handler #forceref $oMyError Local $oWebV2M = ObjCreate("NetWebView2Lib.WebView2Manager") ; REGISTERED VERSION - If @error Then __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & " Manager Creation ERROR", 1) - If @error Then Return SetError(@error, @extended, 0) - - ; Enable/Disable diagnostic logging - ; When enabled, the console will show entries like: +++[NetWebView2Lib][HANDLE:0x...][HH:mm:ss.fff] Message - ; Verbose property was added to allow real-time diagnostic logging to the SciTE console (or any stdout listener). - ; The diagnostic logs use a distinctive prefix and include the instance handle for easier filtering in multi-window applications. - $oWebV2M.Verbose = $bVerbose + If @error Then + $ERR = @error + $EXT = @extended + $MSG = "Manager Creation ERROR : #SLN=" & @ScriptLineNumber + Else + ; Enable/Disable diagnostic logging + ; When enabled, the console will show entries like: +++[NetWebView2Lib][HANDLE:0x...][HH:mm:ss.fff] Message + ; Verbose property was added to allow real-time diagnostic logging to the SciTE console (or any stdout listener). + ; The diagnostic logs use a distinctive prefix and include the instance handle for easier filtering in multi-window applications. + $oWebV2M.Verbose = $bVerbose ;~ If $_g_bNetWebView2_DebugDev Then __NetWebView2_ObjName_FlagsValue($oWebV2M) ; FOR DEV TESTING ONLY - If $sUserAgent Then $oWebV2M.SetUserAgent($sUserAgent) - If $s_AddBrowserArgs Then $oWebV2M.AdditionalBrowserArguments = $s_AddBrowserArgs + If $sUserAgent Then $oWebV2M.SetUserAgent($sUserAgent) + If $s_AddBrowserArgs Then $oWebV2M.AdditionalBrowserArguments = $s_AddBrowserArgs - ObjEvent($oWebV2M, "__NetWebView2_Events__", "IWebViewEvents") - If $s_fnEventPrefix Then ObjEvent($oWebV2M, $s_fnEventPrefix, "IWebViewEvents") - - Return SetError(@error, @extended, $oWebV2M) + ObjEvent($oWebV2M, "__NetWebView2_Events__", "IWebViewEvents") + If $s_fnEventPrefix Then ObjEvent($oWebV2M, $s_fnEventPrefix, "IWebViewEvents") + $ERR = @error + $EXT = @extended + EndIf + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) + Return SetError($ERR, $EXT, $RET) EndFunc ;==>_NetWebView2_CreateManager ; #FUNCTION# ==================================================================================================================== @@ -183,7 +189,7 @@ EndFunc ;==>_NetWebView2_CreateManager ; $i_ZoomFactor - [optional] an integer value. Default is 1.0. ; $s_BackColor - [optional] a string value. Default is "0x2B2B2B". ; $b_InitConsole - [optional] a boolean value. Default is False. -; Return values .: $iInit +; Return values .: $RET ; #TODO description ; Author ........: mLipok, ioa747 ; Modified ......: ; Remarks .......: @@ -192,54 +198,62 @@ EndFunc ;==>_NetWebView2_CreateManager ; Example .......: No ; =============================================================================================================================== Func _NetWebView2_Initialize($oWebV2M, $hUserGUI, $s_ProfileDirectory, $i_Left = 0, $i_Top = 0, $i_Width = 0, $i_Height = 0, $b_SetAutoResize = True, $b_DevToolsEnabled = True, $i_ZoomFactor = 1.0, $s_BackColor = "0x2B2B2B", $b_InitConsole = False) - Local Const $s_Prefix = "[_NetWebView2_Initialize]: GUI:" & $hUserGUI & " ProfileDirectory:" & $s_ProfileDirectory & " LEFT:" & $i_Left & " TOP:" & $i_Top & " WIDTH" & $i_Width & " HEIGHT:" & $i_Height & " SETAUTORESIZE:" & $b_SetAutoResize & " SetAutoResize:" & $b_DevToolsEnabled & " ZoomFactor:" & $i_ZoomFactor & " BackColor:" & $s_BackColor + Local $ERR = 0, $EXT = 0, $RET = False, $MSG = "" ; predefined endpoint results Local $oMyError = ObjEvent("AutoIt.Error", __NetWebView2_COMErrFunc) ; Local COM Error Handler #forceref $oMyError If Not IsHWnd($hUserGUI) Then - __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & " !!! ERROR: $hUserGUI is not a valid HWND pointer.", 1) - Return SetError($NETWEBVIEW2_MESSAGE__CRITICAL_ERROR, 0, False) - EndIf - - ; ⚠️ Important: Enclose ($hUserGUI) in parentheses to force "Pass-by-Value". - ; This prevents the COM layer from changing the AutoIt variable type from Ptr to Int64. - Local $iInit = $oWebV2M.Initialize(($hUserGUI), $s_ProfileDirectory, $i_Left, $i_Top, $i_Width, $i_Height) - If @error Then Return SetError(@error, @extended, $iInit) - If $_g_bNetWebView2_DebugDev Then ConsoleWrite("! IFNC: FailureReportFolderPath = " & $oWebV2M.FailureReportFolderPath & @CRLF) - - #Region ; After Initialization wait for the engine to be ready before navigating - Local $hTimer = TimerInit() - Local $iTimeOut_ms = 10000 ; max 10 seconds for initialization - Local $iMessage - Do - __NetWebView2_Sleep(10) - If @error Then Return SetError(@error, @extended, '') + $ERR = $NETWEBVIEW2_MESSAGE__CRITICAL_ERROR + $EXT = 0 + $RET = False + $MSG = " !!! ERROR: $hUserGUI is not a valid HWND pointer #SLN=" & @ScriptLineNumber + Else - $iMessage = __NetWebView2_LastMessage_KEEPER($oWebV2M) - If $iMessage = $NETWEBVIEW2_MESSAGE__INIT_FAILED _ - Or $iMessage = $NETWEBVIEW2_MESSAGE__PROFILE_NOT_READY _ - Or $iMessage = $NETWEBVIEW2_MESSAGE__PROCESS_FAILED _ - Or $iMessage = $NETWEBVIEW2_MESSAGE__CRITICAL_ERROR Then - Return SetError($iMessage, @extended, '') - EndIf - If TimerDiff($hTimer) >= $iTimeOut_ms Then Return SetError(1, 0, '') - Until $oWebV2M.IsReady Or $iMessage = $NETWEBVIEW2_MESSAGE__INIT_READY + ; ⚠️ Important: Enclose ($hUserGUI) in parentheses to force "Pass-by-Value". + ; This prevents the COM layer from changing the AutoIt variable type from Ptr to Int64. + $RET = $oWebV2M.Initialize(($hUserGUI), $s_ProfileDirectory, $i_Left, $i_Top, $i_Width, $i_Height) + If @error Then + Return SetError(@error, @extended, $RET) + Else + If $_g_bNetWebView2_DebugDev Then ConsoleWrite("! IFNC: FailureReportFolderPath = " & $oWebV2M.FailureReportFolderPath & @CRLF) + + #Region ; After Initialization wait for the engine to be ready before navigating + Local $hTimer = TimerInit() + Local $iTimeOut_ms = 10000 ; max 10 seconds for initialization + Local $iMessage + Do + __NetWebView2_Sleep(10) + If @error Then Return SetError(@error, @extended, '') + + $iMessage = __NetWebView2_LastMessage_KEEPER($oWebV2M) + If $iMessage = $NETWEBVIEW2_MESSAGE__INIT_FAILED _ + Or $iMessage = $NETWEBVIEW2_MESSAGE__PROFILE_NOT_READY _ + Or $iMessage = $NETWEBVIEW2_MESSAGE__PROCESS_FAILED _ + Or $iMessage = $NETWEBVIEW2_MESSAGE__CRITICAL_ERROR Then + Return SetError($iMessage, @extended, '') + EndIf + If TimerDiff($hTimer) >= $iTimeOut_ms Then Return SetError(1, 0, '') + Until $oWebV2M.IsReady Or $iMessage = $NETWEBVIEW2_MESSAGE__INIT_READY ;~ If Not __NetWebView2_WaitForReadyState($oWebV2M, $hTimer, $iTimeOut_ms) Then Return SetError(2, 0, '') - #EndRegion ; After Initialization wait for the engine to be ready before navigating + #EndRegion ; After Initialization wait for the engine to be ready before navigating - ; WebView2 Configuration - $oWebV2M.SetAutoResize($b_SetAutoResize) ; Using SetAutoResize(True) to skip WM_SIZE - $oWebV2M.AreDevToolsEnabled = $b_DevToolsEnabled ; Allow F12 - $oWebV2M.ZoomFactor = $i_ZoomFactor - $oWebV2M.BackColor = $s_BackColor + ; WebView2 Configuration + $oWebV2M.SetAutoResize($b_SetAutoResize) ; Using SetAutoResize(True) to skip WM_SIZE + $oWebV2M.AreDevToolsEnabled = $b_DevToolsEnabled ; Allow F12 + $oWebV2M.ZoomFactor = $i_ZoomFactor + $oWebV2M.BackColor = $s_BackColor - If $b_InitConsole Then - $oWebV2M.AddInitializationScript(__Get_Core_Bridge_JS()) - EndIf + If $b_InitConsole Then + $oWebV2M.AddInitializationScript(__Get_Core_Bridge_JS()) + EndIf - If @error Then __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & " !!! Manager Creation ERROR", 1) - Return SetError(@error, $oWebV2M.GetBrowserProcessId(), $iInit) + $EXT = $oWebV2M.GetBrowserProcessId() + EndIf + EndIf + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) + If $ERR Then __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & " !!! Manager Creation ERROR", 1) + Return SetError($ERR, $EXT, $RET) EndFunc ;==>_NetWebView2_Initialize ; #FUNCTION# ==================================================================================================================== @@ -259,23 +273,27 @@ EndFunc ;==>_NetWebView2_Initialize ; Example .......: No ; =============================================================================================================================== Func _NetWebView2_IsRegisteredCOMObject() - Local $iErr = 0, $iExt = 0, $iRet = False ; predefined endpoint results + Local Const $s_Prefix = "[_NetWebView2_IsRegisteredCOMObject]:" + Local $ERR = 0, $EXT = 0, $RET = False, $MSG = "" ; predefined endpoint results Local $oMyError = ObjEvent("AutoIt.Error", __NetWebView2_fake_COMErrFunc) ; Local COM Error Handler #forceref $oMyError ObjCreate("NetWebView2Lib.WebView2Manager") If @error Then - $iErr = 1 + $ERR = 1 + $MSG = " NetWebView2Lib.WebView2Manager Not Registered" Else ObjCreate("NetWebView2Lib.WebView2Parser") If @error Then - $iErr = 2 + $ERR = 2 + $MSG = " NetWebView2Lib.WebView2Parser Not Registered" Else - $iRet = True + $RET = True EndIf EndIf - Return SetError($iErr, $iExt, $iRet) ; one common endpoint for entire functions + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) + Return SetError($ERR, $EXT, $RET) ; one common endpoint for entire functions EndFunc ;==>_NetWebView2_IsRegisteredCOMObject ; #FUNCTION# ==================================================================================================================== @@ -292,20 +310,25 @@ EndFunc ;==>_NetWebView2_IsRegisteredCOMObject ; Example .......: No ; =============================================================================================================================== Func _NetWebView2_IsAlreadyInstalled() - Local $sResult, $iExtended = 0 + Local Const $s_Prefix = "[_NetWebView2_IsAlreadyInstalled]:" + Local $ERR = 0, $EXT = 0, $RET = "", $MSG = "" ; predefined endpoint results If @AutoItX64 Then - $sResult = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}', 'pv') + $RET = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}', 'pv') Else - $sResult = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}', 'pv') + $RET = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}', 'pv') EndIf - If $sResult Then - $iExtended = 1 + If $RET Then + $EXT = 1 Else - $sResult = RegRead('HKEY_CURRENT_USER\Software\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}', 'pv') - $iExtended = 2 + $RET = RegRead('HKEY_CURRENT_USER\Software\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}', 'pv') + $EXT = 2 EndIf - If @AutoItX64 Then $iExtended += 10 - Return SetError(($sResult = ''), $iExtended, $sResult) + + If $RET = "" Then $ERR = 1 + If @AutoItX64 Then $EXT += 10 + + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) + Return SetError($ERR, $EXT, $RET) #cs The two registry locations to inspect on 64-bit Windows: https://learn.microsoft.com/pl-pl/microsoft-edge/webview2/concepts/distribution?tabs=dotnetcsharp#detect-if-a-webview2-runtime-is-already-installed HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5} @@ -315,7 +338,7 @@ HKEY_CURRENT_USER\Software\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF #cs The two registry locations to inspect on 32-bit Windows: https://learn.microsoft.com/pl-pl/microsoft-edge/webview2/concepts/distribution?tabs=dotnetcsharp#detect-if-a-webview2-runtime-is-already-installed HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5} HKEY_CURRENT_USER\Software\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5} -#CE The two registry locations to inspect on 32-bit Windows: https://learn.microsoft.com/pl-pl/microsoft-edge/webview2/concepts/distribution?tabs=dotnetcsharp#detect-if-a-webview2-runtime-is-already-installed +#ce The two registry locations to inspect on 32-bit Windows: https://learn.microsoft.com/pl-pl/microsoft-edge/webview2/concepts/distribution?tabs=dotnetcsharp#detect-if-a-webview2-runtime-is-already-installed EndFunc ;==>_NetWebView2_IsAlreadyInstalled @@ -335,22 +358,40 @@ EndFunc ;==>_NetWebView2_IsAlreadyInstalled ; =============================================================================================================================== Func _NetWebView2_CleanUp(ByRef $oWebV2M, ByRef $oJSBridge) Local Const $s_Prefix = "[_NetWebView2_CleanUp]:" + Local $ERR = 0, $EXT = 0, $RET = False, $MSG = "" ; predefined endpoint results Local $oMyError = ObjEvent("AutoIt.Error", __NetWebView2_COMErrFunc) ; Local COM Error Handler #forceref $oMyError - If (Not IsObj($oWebV2M)) Or ObjName($oWebV2M, $OBJ_PROGID) <> 'NetWebView2Lib.WebView2Manager' Then Return SetError(1, 0, __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & " ! Object not found", 1)) + If Not IsObj($oWebV2M) Then + $ERR = 1 + $EXT = 1 + $MSG = " ! NetWebView2Lib.WebView2Manager is not object : #SLN=" & @ScriptLineNumber + ElseIf ObjName($oWebV2M, $OBJ_PROGID) <> "NetWebView2Lib.WebView2Manager" Then + $ERR = 2 + $EXT = 1 + $MSG = " ! NetWebView2Lib.WebView2Manager object has invalid ProgID : #SLN=" & @ScriptLineNumber + ElseIf Not IsObj($oJSBridge) Then + $ERR = 3 + $EXT = 2 + $MSG = " ! NetWebView2Lib.WebView2Bridge is not object : #SLN=" & @ScriptLineNumber + ElseIf ObjName($oJSBridge, $OBJ_PROGID) <> "NetWebView2Lib.WebView2Bridge" Then + $ERR = 4 + $EXT = 2 + $MSG = " ! NebView2Lib.WebView2Bridge object has invalid ProgID : #SLN=" & @ScriptLineNumber + Else + _NetWebView2_SetLockState($oWebV2M, True) + $RET = $oWebV2M.Cleanup() + $ERR = @error + If $ERR Then $MSG = " ! Error during internal CleanUp : #SLN=" & @ScriptLineNumber - _NetWebView2_SetLockState($oWebV2M, True) - Local $iRet = $oWebV2M.Cleanup() - If @error Then __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & " ! Error during internal cleanup", 1) - $oWebV2M = 0 - $oJSBridge = 0 - If @error Then __NetWebView2_Log(@ScriptLineNumber, $s_Prefix, 1) + $oWebV2M = 0 + $oJSBridge = 0 + EndIf ; Update Static Map to delete Handle __NetWebView2_LastMessage_KEEPER($oWebV2M, -1) - - Return SetError(@error, @extended, $iRet) + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) + Return SetError($ERR, $EXT, $RET) EndFunc ;==>_NetWebView2_CleanUp ; #FUNCTION# ==================================================================================================================== @@ -385,20 +426,21 @@ EndFunc ;==>_NetWebView2_CleanUp ; =============================================================================================================================== Func _NetWebView2_ExecuteScript($oWebV2M, $sJavaScript, $iMode = $NETWEBVIEW2_EXECUTEJS_MODE0_FIREANDFORGET) Local Const $s_Prefix = "[_NetWebView2_ExecuteScript]:" & " TYPE: " & $iMode + Local $ERR = 0, $EXT = 0, $RET = False, $MSG = "" ; predefined endpoint results Local $oMyError = ObjEvent("AutoIt.Error", __NetWebView2_COMErrFunc) ; Local COM Error Handler #forceref $oMyError - Local $iRet Switch $iMode Case 0 - $iRet = $oWebV2M.ExecuteScript($sJavaScript) + $RET = $oWebV2M.ExecuteScript($sJavaScript) Case 1 - $iRet = $oWebV2M.ExecuteScriptOnPage($sJavaScript) + $RET = $oWebV2M.ExecuteScriptOnPage($sJavaScript) Case 2 - $iRet = $oWebV2M.ExecuteScriptWithResult($sJavaScript) + $RET = $oWebV2M.ExecuteScriptWithResult($sJavaScript) EndSwitch - If @error Then __NetWebView2_Log(@ScriptLineNumber, $s_Prefix, 1) - Return SetError(@error, @extended, $iRet) + $ERR = @error + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) + Return SetError($ERR, $EXT, $RET) EndFunc ;==>_NetWebView2_ExecuteScript ; #FUNCTION# ==================================================================================================================== @@ -417,16 +459,22 @@ EndFunc ;==>_NetWebView2_ExecuteScript ; =============================================================================================================================== Func _NetWebView2_GetBridge($oWebV2M, $s_fnEventPrefix = "") Local Const $s_Prefix = "[_NetWebView2_GetBridge]:" & " fnEventPrefix:" & $s_fnEventPrefix + Local $ERR = 0, $EXT = 0, $RET = 0, $MSG = "" ; predefined endpoint results Local $oMyError = ObjEvent("AutoIt.Error", __NetWebView2_COMErrFunc) ; Local COM Error Handler #forceref $oMyError Local $oWebJS = $oWebV2M.GetBridge() - If @error Then __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & " : Manager.GetBridge() ERROR", 1) - - ObjEvent($oWebJS, "__NetWebView2_JSEvents__", "IBridgeEvents") - If $s_fnEventPrefix Then ObjEvent($oWebJS, $s_fnEventPrefix, "IBridgeEvents") + If @error Then + $ERR = @error + $MSG = " ! Manager.GetBridge() ERROR : #SLN=" & @ScriptLineNumber + Else + ObjEvent($oWebJS, "__NetWebView2_JSEvents__", "IBridgeEvents") + If $s_fnEventPrefix Then ObjEvent($oWebJS, $s_fnEventPrefix, "IBridgeEvents") + $RET = $oWebJS + EndIf - Return SetError(@error, @extended, $oWebJS) + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) + Return SetError($ERR, $EXT, $RET) EndFunc ;==>_NetWebView2_GetBridge ; #FUNCTION# ==================================================================================================================== @@ -444,12 +492,16 @@ EndFunc ;==>_NetWebView2_GetBridge ; =============================================================================================================================== Func _NetWebView2_GetVersion($oWebV2M) Local Const $s_Prefix = "[_NetWebView2_GetVersion]:" + Local $ERR = 0, $EXT = 0, $RET = False, $MSG = "" ; predefined endpoint results Local $oMyError = ObjEvent("AutoIt.Error", __NetWebView2_COMErrFunc) ; Local COM Error Handler #forceref $oMyError - Local $sVersion = $oWebV2M.version - __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & " : Version=" & $sVersion, 1) - Return SetError(@error, @extended, $sVersion) + $RET = $oWebV2M.version + $ERR = @error + $MSG = " : Version=" & $RET & " : #SLN=" & @ScriptLineNumber + + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) + Return SetError($ERR, $EXT, $RET) EndFunc ;==>_NetWebView2_GetVersion ; #FUNCTION# ==================================================================================================================== @@ -474,6 +526,7 @@ EndFunc ;==>_NetWebView2_GetVersion ; =============================================================================================================================== Func _NetWebView2_LoadWait($oWebV2M, $iWaitMessage = $NETWEBVIEW2_MESSAGE__TITLE_CHANGED, $sExpectedTitle = "", $iTimeOut_ms = 5000) Local Const $s_Prefix = '[_NetWebView2_LoadWait]: WaitMessage:' & $iWaitMessage & ' WAIT:' & $iWaitMessage & ' ExpectedTitle="' & $sExpectedTitle & '" TimeOut_ms=' & $iTimeOut_ms + Local $ERR = 0, $EXT = 0, $RET = False, $MSG = "" ; predefined endpoint results Local $hTimer = TimerInit() ; RESET: Clear the status of this instance before starting the wait loop @@ -487,13 +540,13 @@ Func _NetWebView2_LoadWait($oWebV2M, $iWaitMessage = $NETWEBVIEW2_MESSAGE__TITLE ; RULE 1: If we reached the target status or higher Local $bWebIsReady = $oWebV2M.IsReady If @error Then - __NetWebView2_Log(@ScriptLineNumber, $s_Prefix, 1) + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix, 1, $ERR, $EXT) Return SetError(1, 0, False) ; browser/COM error ? EndIf ; RULE 2: TimeOut Check If $iTimeOut_ms And TimerDiff($hTimer) >= $iTimeOut_ms Then - __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & " - TIME OUT - the waiting time has expired", 1) + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & " - TIME OUT - the waiting time has expired", 1, $ERR, $EXT) Return SetError(2, 0, False) EndIf @@ -504,10 +557,10 @@ Func _NetWebView2_LoadWait($oWebV2M, $iWaitMessage = $NETWEBVIEW2_MESSAGE__TITLE Local $iLastMessage = -1 Local $sReadyState = _NetWebView2_ExecuteScript($oWebV2M, "document.readyState", $NETWEBVIEW2_EXECUTEJS_MODE2_RESULT) If @error Then - __NetWebView2_Log(@ScriptLineNumber, $s_Prefix, 1) + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix, 1, $ERR, $EXT) Return SetError(7, 0, False) ElseIf StringLeft($sReadyState, 6) == "ERROR:" Then - __NetWebView2_Log(@ScriptLineNumber, $s_Prefix, 1) + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix, 1, $ERR, $EXT) Return SetError(8, 0, False) ElseIf $sReadyState = "complete" Then ; RULE 5: checking events messages @@ -515,7 +568,7 @@ Func _NetWebView2_LoadWait($oWebV2M, $iWaitMessage = $NETWEBVIEW2_MESSAGE__TITLE If $_g_bNetWebView2_DebugDev Then ConsoleWrite('! IFNC: TEST LOAD WAIT: ReadyState=' & $sReadyState & ' LastMessage=' & $iLastMessage & ' WaitMessage=' & $iWaitMessage & ' SLN=' & @ScriptLineNumber & @CRLF) If $iLastMessage = $NETWEBVIEW2_MESSAGE__NAV_ERROR Or $iLastMessage = $NETWEBVIEW2_MESSAGE__PROCESS_FAILED Or $iLastMessage = $NETWEBVIEW2_MESSAGE__CRITICAL_ERROR Then If $_g_bNetWebView2_DebugDev Then ConsoleWrite('! IFNC: TEST LOAD WAIT: ' & $iLastMessage & ' SLN=' & @ScriptLineNumber & @CRLF) - __NetWebView2_Log(@ScriptLineNumber, $s_Prefix, 1) + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix, 1, $ERR, $EXT) Return SetError(3, $iLastMessage, False) ;~ ElseIf $iLastMessage >= $iWaitMessage Then ; checking events ElseIf $iLastMessage >= $iWaitMessage Then ; checking events @@ -525,17 +578,21 @@ Func _NetWebView2_LoadWait($oWebV2M, $iWaitMessage = $NETWEBVIEW2_MESSAGE__TITLE Local $s_MessageInfo = '! IFNC: TEST LOAD WAIT: CurrentTitle="' & $sCurrentTitle & '" ExpectedTitle"' & $sExpectedTitle & '" TitleCheck=' & $bTitleCheck & ' LastMessage=' & $iLastMessage If $sExpectedTitle And $iWaitMessage = $NETWEBVIEW2_MESSAGE__TITLE_CHANGED And $bTitleCheck Then If $_g_bNetWebView2_DebugDev Then ConsoleWrite($s_MessageInfo & ' SLN=' & @ScriptLineNumber & @CRLF) - __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & " LastMessage=" & $iLastMessage, 1) + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & " LastMessage=" & $iLastMessage, 1, $ERR, $EXT) Return True Else If $_g_bNetWebView2_DebugDev Then ConsoleWrite($s_MessageInfo & ' SLN=' & @ScriptLineNumber & @CRLF) - __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & " LastMessage=" & $iLastMessage, 1) + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & " LastMessage=" & $iLastMessage, 1, $ERR, $EXT) Return True EndIf EndIf EndIf If $_g_bNetWebView2_DebugDev Then ConsoleWrite("> IFNC: TEST LOAD WAIT: __NetWebView2_LastMessage_Navigation($oWebV2M)=" & $iLastMessage & ' >> ' & __NetWebView2_LastMessage_Navigation($oWebV2M) & ' SLN=' & @ScriptLineNumber & @CRLF) WEnd + + #TODO ENDPOINT REFACTORING + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) + Return SetError($ERR, $EXT, $RET) EndFunc ;==>_NetWebView2_LoadWait ; #FUNCTION# ==================================================================================================================== @@ -563,6 +620,7 @@ EndFunc ;==>_NetWebView2_LoadWait ; =============================================================================================================================== Func _NetWebView2_Navigate($oWebV2M, $s_URL, $iWaitMessage = $NETWEBVIEW2_MESSAGE__TITLE_CHANGED, $sExpectedTitle = "", $iTimeOut_ms = 5000) Local Const $s_Prefix = "[_NetWebView2_Navigate]: URL:" & $s_URL & " WAIT:" & $iWaitMessage & " TimeOut_ms=" & $iTimeOut_ms + Local $ERR = 0, $EXT = 0, $RET = False, $MSG = "" ; predefined endpoint results Local $oMyError = ObjEvent("AutoIt.Error", __NetWebView2_COMErrFunc) ; Local COM Error Handler #forceref $oMyError @@ -581,15 +639,21 @@ Func _NetWebView2_Navigate($oWebV2M, $s_URL, $iWaitMessage = $NETWEBVIEW2_MESSAG ; 3. Wait for status using the Bulletproof LoadWait logic Local $bResult = _NetWebView2_LoadWait($oWebV2M, $iWaitMessage, $sExpectedTitle, $iTimeOut_ms) - Local $iErr = @error, $iExt = @extended + $ERR = @error + $EXT = @extended + ; If an error occurred (3: Nav Error, 4: Timeout), log the failure If @error Then - __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & " -> LOAD WAIT FAILED (Err:" & $iErr & " Ext:" & $iExt & ")", 1) + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & " -> LOAD WAIT FAILED (Err:" & $ERR & " Ext:" & $EXT & ")", 1, $ERR, $EXT) EndIf $oWebV2M.UnLockWebView() - Return SetError($iErr, $iExt, $bResult) + Return SetError($ERR, $EXT, $bResult) + + #TODO ENDPOINT REFACTORING + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) + Return SetError($ERR, $EXT, $RET) EndFunc ;==>_NetWebView2_Navigate ; #FUNCTION# ==================================================================================================================== @@ -612,6 +676,7 @@ EndFunc ;==>_NetWebView2_Navigate ; =============================================================================================================================== Func _NetWebView2_NavigateToString($oWebV2M, $s_HTML, $iWaitMessage = $NETWEBVIEW2_MESSAGE__TITLE_CHANGED, $sExpectedTitle = "", $iTimeOut_ms = 5000) Local Const $s_Prefix = "[_NetWebView2_NavigateToString]:" & " HTML Size:" & StringLen($s_HTML) & " WaitMessage:" & $iWaitMessage & " TimeOut_ms=" & $iTimeOut_ms + Local $ERR = 0, $EXT = 0, $RET = False, $MSG = "" ; predefined endpoint results Local $oMyError = ObjEvent("AutoIt.Error", __NetWebView2_COMErrFunc) ; Local COM Error Handler #forceref $oMyError @@ -623,19 +688,21 @@ Func _NetWebView2_NavigateToString($oWebV2M, $s_HTML, $iWaitMessage = $NETWEBVIE Return SetError(2) Else $oWebV2M.LockWebView() - Local $iNavigation = $oWebV2M.NavigateToString($s_HTML) - Local $iErr = @error, $iExt = @extended - If @error Then - Return SetError($iErr, $iExt, $iNavigation) - Else + $RET = $oWebV2M.NavigateToString($s_HTML) + $ERR = @error + If Not $ERR Then _NetWebView2_LoadWait($oWebV2M, $iWaitMessage, $sExpectedTitle, $iTimeOut_ms) - $iErr = @error - $iExt = @extended + $ERR = @error + $EXT = @extended $oWebV2M.UnLockWebView() - If $iErr Then __NetWebView2_Log(@ScriptLineNumber, $s_Prefix, 1, $iErr, $iExt) - Return SetError($iErr, $iExt, $iNavigation) + If $ERR Then __NetWebView2_Log(@ScriptLineNumber, $s_Prefix, 1, $ERR, $EXT) + Return SetError($ERR, $EXT, $RET) EndIf EndIf + + #TODO ENDPOINT REFACTORING + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) + Return SetError($ERR, $EXT, $RET) EndFunc ;==>_NetWebView2_NavigateToString #EndRegion ; === NetWebView2Lib UDF === _NetWebView2_* core functions @@ -666,6 +733,8 @@ EndFunc ;==>_NetWebView2_NavigateToString ; Example .......: No ; =============================================================================================================================== Func _NetWebView2_BrowserSetupWrapper($hOuterParentWindow, ByRef $oOuterWeb, $sEventPrefix, $sProfile, ByRef $oOuterBridge, ByRef $hInnerWebViewWindow, $iX, $iY, $iW, $iH, $s_AddBrowserArgs) + Local Const $s_Prefix = "[_NetWebView2_BrowserSetupWrapper]:" & " EventPrefix:" & $sEventPrefix & " Profile:" & $sProfile & " AddBrowserArgs=" & $s_AddBrowserArgs + Local $ERR = 0, $EXT = 0, $RET = False, $MSG = "" ; predefined endpoint results $hInnerWebViewWindow = GUICreate("", $iW, $iH, $iX, $iY, $WS_CHILD, -1, $hOuterParentWindow) GUISetState(@SW_SHOW, $hInnerWebViewWindow) @@ -677,6 +746,10 @@ Func _NetWebView2_BrowserSetupWrapper($hOuterParentWindow, ByRef $oOuterWeb, $sE $oOuterBridge = _NetWebView2_GetBridge($oOuterWeb, $sEventPrefix & "_Bridge__") If @error Then Return SetError(@error, @extended, $oOuterBridge) + + #TODO ENDPOINT REFACTORING + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) + Return SetError($ERR, $EXT, $RET) EndFunc ;==>_NetWebView2_BrowserSetupWrapper ; #FUNCTION# ==================================================================================================================== @@ -697,14 +770,19 @@ EndFunc ;==>_NetWebView2_BrowserSetupWrapper ; =============================================================================================================================== Func _NetWebView2_ExportPageData($oWebV2M, $iFormat, $sFilePath = '') Local Const $s_Prefix = "[_NetWebView2_ExportPageData]:" & " Format:" & $iFormat & " FilePath:" & (($sFilePath) ? ($sFilePath) : ('"EMPTY"')) + Local $ERR = 0, $EXT = 0, $RET = False, $MSG = "" ; predefined endpoint results Local $oMyError = ObjEvent("AutoIt.Error", __NetWebView2_COMErrFunc) ; Local COM Error Handler #forceref $oMyError #TODO $sParameters - search for => "name": "captureSnapshot" ; https://github.com/ChromeDevTools/devtools-protocol/blob/master/json/browser_protocol.json Local $s_Result = $oWebV2M.ExportPageData($iFormat, $sFilePath) If StringLeft($s_Result, 6) = 'ERROR:' Then SetError(1) - __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & " RESULT:" & ((@error) ? ($s_Result) : ("SUCCESS")), 1) + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & " RESULT:" & ((@error) ? ($s_Result) : ("SUCCESS")), 1, $ERR, $EXT) Return SetError(@error, @extended, $s_Result) + + #TODO ENDPOINT REFACTORING + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) + Return SetError($ERR, $EXT, $RET) EndFunc ;==>_NetWebView2_ExportPageData ; #FUNCTION# ==================================================================================================================== @@ -722,12 +800,17 @@ EndFunc ;==>_NetWebView2_ExportPageData ; =============================================================================================================================== Func _NetWebView2_GetSource($oWebV2M) Local Const $s_Prefix = "[_NetWebView2_GetSource]:" + Local $ERR = 0, $EXT = 0, $RET = False, $MSG = "" ; predefined endpoint results Local $oMyError = ObjEvent("AutoIt.Error", __NetWebView2_COMErrFunc) ; Local COM Error Handler #forceref $oMyError Local $sSource = $oWebV2M.GetSource() - If @error Then __NetWebView2_Log(@ScriptLineNumber, $s_Prefix, 1) + If @error Then __NetWebView2_Log(@ScriptLineNumber, $s_Prefix, 1, $ERR, $EXT) Return SetError(@error, @extended, $sSource) + + #TODO ENDPOINT REFACTORING + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) + Return SetError($ERR, $EXT, $RET) EndFunc ;==>_NetWebView2_GetSource ; #FUNCTION# ==================================================================================================================== @@ -752,7 +835,9 @@ EndFunc ;==>_NetWebView2_GetSource ; Example .......: No ; =============================================================================================================================== Func _NetWebView2_NavigateToPDF($oWebV2M, $s_URL_or_FilePath, Const $s_Parameters = '', $iWaitMessage = $NETWEBVIEW2_MESSAGE__TITLE_CHANGED, $sExpectedTitle = Default, $iTimeOut_ms = 5000, Const $iSleepAfter_ms = 1000, Const $bFreeze = True) - Local Const $s_Prefix = "[_NetWebView2_NavigateToPDF]: URL_or_File:" & $s_URL_or_FilePath ; #TODO suplement + #TODO suplement => $s_Prefix + Local Const $s_Prefix = "[_NetWebView2_NavigateToPDF]: URL_or_File:" & $s_URL_or_FilePath + Local $ERR = 0, $EXT = 0, $RET = False, $MSG = "" ; predefined endpoint results If (Not IsObj($oWebV2M)) Or ObjName($oWebV2M, $OBJ_PROGID) <> 'NetWebView2Lib.WebView2Manager' Then Return SetError(1, 0, "ERROR: Invalid Object") @@ -787,9 +872,13 @@ Func _NetWebView2_NavigateToPDF($oWebV2M, $s_URL_or_FilePath, Const $s_Parameter If Not @error Then __NetWebView2_Sleep($iSleepAfter_ms) If @error Then Return SetError(@error, @extended, '') - __NetWebView2_Log(@ScriptLineNumber, $s_Prefix, 1) + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix, 1, $ERR, $EXT) If $bFreeze And $idPic Then __NetWebView2_freezer($oWebV2M, $idPic) $oWebV2M.UnLockWebView() + + #TODO ENDPOINT REFACTORING + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) + Return SetError($ERR, $EXT, $RET) EndFunc ;==>_NetWebView2_NavigateToPDF ; #FUNCTION# ==================================================================================================================== @@ -809,11 +898,12 @@ EndFunc ;==>_NetWebView2_NavigateToPDF ; =============================================================================================================================== Func _NetWebView2_PrintToPdfStream($oWebV2M, $b_TBinary_FBase64) Local Const $s_Prefix = "[_NetWebView2_PrintToPdfStream]: TBinary_FBase64:" & $b_TBinary_FBase64 + Local $ERR = 0, $EXT = 0, $RET = False, $MSG = "" ; predefined endpoint results Local $oMyError = ObjEvent("AutoIt.Error", __NetWebView2_COMErrFunc) ; Local COM Error Handler #forceref $oMyError Local $s_Result = $oWebV2M.PrintToPdfStream() - __NetWebView2_Log(@ScriptLineNumber, $s_Prefix, 1) + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix, 1, $ERR, $EXT) If StringInStr($s_Result, 'ERROR:') Then SetError(1) If $b_TBinary_FBase64 Then @@ -821,8 +911,12 @@ Func _NetWebView2_PrintToPdfStream($oWebV2M, $b_TBinary_FBase64) $s_Result = _NetWebView2_DecodeB64ToBinary($oWebV2M, $s_Result) EndIf - __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & " RESULT:" & ((@error) ? ($s_Result) : ("SUCCESS")), 1) + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & " RESULT:" & ((@error) ? ($s_Result) : ("SUCCESS")), 1, $ERR, $EXT) Return SetError(@error, @extended, $s_Result) + + #TODO ENDPOINT REFACTORING + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) + Return SetError($ERR, $EXT, $RET) EndFunc ;==>_NetWebView2_PrintToPdfStream #EndRegion ; === NetWebView2Lib UDF === _NetWebView2_* helper functions @@ -844,6 +938,8 @@ EndFunc ;==>_NetWebView2_PrintToPdfStream ; Example .......: No ; =============================================================================================================================== Func _NetWebView2_AddInitializationScript($oWebV2M, $vScript) + Local Const $s_Prefix = "[_NetWebView2_AddInitializationScript]:" + Local $ERR = 0, $EXT = 0, $RET = False, $MSG = "" ; predefined endpoint results If (Not IsObj($oWebV2M)) Or ObjName($oWebV2M, $OBJ_PROGID) <> 'NetWebView2Lib.WebView2Manager' Then Return SetError(1, 0, "ERROR: Invalid Object") ; Smart Detection @@ -852,6 +948,10 @@ Func _NetWebView2_AddInitializationScript($oWebV2M, $vScript) Local $sScriptId = $oWebV2M.AddInitializationScript($vScript) If StringInStr($sScriptId, "ERROR:") Then Return SetError(2, 0, $sScriptId) Return SetError(0, 0, $sScriptId) + + #TODO ENDPOINT REFACTORING + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) + Return SetError($ERR, $EXT, $RET) EndFunc ;==>_NetWebView2_AddInitializationScript ; #FUNCTION# ==================================================================================================================== @@ -870,9 +970,15 @@ EndFunc ;==>_NetWebView2_AddInitializationScript ; Example .......: No ; =============================================================================================================================== Func _NetWebView2_RemoveInitializationScript($oWebV2M, $sScriptId) + Local Const $s_Prefix = "[_NetWebView2_AddInitializationScript]:" + Local $ERR = 0, $EXT = 0, $RET = False, $MSG = "" ; predefined endpoint results If (Not IsObj($oWebV2M)) Or ObjName($oWebV2M, $OBJ_PROGID) <> 'NetWebView2Lib.WebView2Manager' Then Return SetError(1, 0, False) ; Error 1: Not an object $oWebV2M.RemoveInitializationScript($sScriptId) Return SetError(@error, 0, (@error ? False : True)) + + #TODO ENDPOINT REFACTORING + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) + Return SetError($ERR, $EXT, $RET) EndFunc ;==>_NetWebView2_RemoveInitializationScript ; #FUNCTION# ==================================================================================================================== @@ -893,9 +999,15 @@ EndFunc ;==>_NetWebView2_RemoveInitializationScript ; Example .......: No ; =============================================================================================================================== Func _NetWebView2_SetVirtualHostNameToFolderMapping($oWebV2M, $sHostName, $sFolderPath, $iAccessKind = 0) + Local Const $s_Prefix = "[_NetWebView2_SetVirtualHostNameToFolderMapping]:" + Local $ERR = 0, $EXT = 0, $RET = False, $MSG = "" ; predefined endpoint results If (Not IsObj($oWebV2M)) Or ObjName($oWebV2M, $OBJ_PROGID) <> 'NetWebView2Lib.WebView2Manager' Then Return SetError(1, 0, False) $oWebV2M.SetVirtualHostNameToFolderMapping($sHostName, $sFolderPath, $iAccessKind) Return SetError(@error, 0, (@error ? False : True)) + + #TODO ENDPOINT REFACTORING + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) + Return SetError($ERR, $EXT, $RET) EndFunc ;==>_NetWebView2_SetVirtualHostNameToFolderMapping ; #FUNCTION# ==================================================================================================================== @@ -914,9 +1026,15 @@ EndFunc ;==>_NetWebView2_SetVirtualHostNameToFolderMapping ; Example .......: No ; =============================================================================================================================== Func _NetWebView2_SetLockState($oWebV2M, $bLockState) + Local Const $s_Prefix = "[_NetWebView2_SetLockState]:" + Local $ERR = 0, $EXT = 0, $RET = False, $MSG = "" ; predefined endpoint results If (Not IsObj($oWebV2M)) Or ObjName($oWebV2M, $OBJ_PROGID) <> 'NetWebView2Lib.WebView2Manager' Then Return SetError(1, 0, False) $oWebV2M.SetLockState($bLockState) Return SetError(@error, 0, (@error ? False : True)) + + #TODO ENDPOINT REFACTORING + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) + Return SetError($ERR, $EXT, $RET) EndFunc ;==>_NetWebView2_SetLockState ; #FUNCTION# ==================================================================================================================== @@ -935,10 +1053,16 @@ EndFunc ;==>_NetWebView2_SetLockState ; Example .......: No ; =============================================================================================================================== Func _NetWebView2_EncodeBinaryToB64($oWebV2M, ByRef $dBinary) + Local Const $s_Prefix = "[_NetWebView2_EncodeBinaryToB64]:" + Local $ERR = 0, $EXT = 0, $RET = False, $MSG = "" ; predefined endpoint results If (Not IsObj($oWebV2M)) Or ObjName($oWebV2M, $OBJ_PROGID) <> 'NetWebView2Lib.WebView2Manager' Then Return SetError(1, 0, "") Local $sResult = $oWebV2M.EncodeBinaryToB64($dBinary) If @error Then Return SetError(@error, 0, "") Return SetError(0, 0, $sResult) + + #TODO ENDPOINT REFACTORING + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) + Return SetError($ERR, $EXT, $RET) EndFunc ;==>_NetWebView2_EncodeBinaryToB64 ; #FUNCTION# ==================================================================================================================== @@ -957,10 +1081,16 @@ EndFunc ;==>_NetWebView2_EncodeBinaryToB64 ; Example .......: No ; =============================================================================================================================== Func _NetWebView2_DecodeB64ToBinary($oWebV2M, ByRef $sB64) + Local Const $s_Prefix = "[_NetWebView2_DecodeB64ToBinary]:" + Local $ERR = 0, $EXT = 0, $RET = False, $MSG = "" ; predefined endpoint results If (Not IsObj($oWebV2M)) Or ObjName($oWebV2M, $OBJ_PROGID) <> 'NetWebView2Lib.WebView2Manager' Then Return SetError(1, 0, Binary("")) Local $dResult = $oWebV2M.DecodeB64ToBinary($sB64) If @error Then Return SetError(@error, 0, Binary("")) Return SetError(0, 0, $dResult) + + #TODO ENDPOINT REFACTORING + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) + Return SetError($ERR, $EXT, $RET) EndFunc ;==>_NetWebView2_DecodeB64ToBinary ; #FUNCTION# ==================================================================================================================== @@ -979,11 +1109,42 @@ EndFunc ;==>_NetWebView2_DecodeB64ToBinary ; Example .......: No ; =============================================================================================================================== Func _NetWebView2_SetBuiltInErrorPageEnabled($oWebV2M, $bEnabled) + Local Const $s_Prefix = "[_NetWebView2_SetBuiltInErrorPageEnabled]:" + Local $ERR = 0, $EXT = 0, $RET = False, $MSG = "" ; predefined endpoint results If (Not IsObj($oWebV2M)) Or ObjName($oWebV2M, $OBJ_PROGID) <> 'NetWebView2Lib.WebView2Manager' Then Return SetError(1, 0, False) $oWebV2M.IsBuiltInErrorPageEnabled = $bEnabled Return SetError(@error, 0, (@error ? False : True)) + + #TODO ENDPOINT REFACTORING + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) + Return SetError($ERR, $EXT, $RET) EndFunc ;==>_NetWebView2_SetBuiltInErrorPageEnabled +; #INTERNAL_USE_ONLY# =========================================================================================================== +; Name ..........: _NetWebView2_GetFrame +; Description ...: Returns a Frame Object (IWebView2Frame) for the specified index. +; Syntax ........: _NetWebView2_GetFrame($oWebV2M, $iIndex) +; Parameters ....: $oWebV2M - an object. +; $iIndex - an int value. +; Return values .: Frame Object or Null +; Author ........: ioa747 +; Modified ......: +; Remarks .......: +; Related .......: +; Link ..........: +; Example .......: Yes +; =============================================================================================================================== +Func _NetWebView2_GetFrame($oWebV2M, $iIndex) + Local Const $s_Prefix = "[_NetWebView2_GetFrame]:" + Local $ERR = 0, $EXT = 0, $RET = False, $MSG = "" ; predefined endpoint results + Local $oFrame = $oWebV2M.GetFrame($iIndex) + Return SetError(@error, @extended, $oFrame) + + #TODO ENDPOINT REFACTORING + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) + Return SetError($ERR, $EXT, $RET) +EndFunc ;==>_NetWebView2_GetFrame + ; #FUNCTION# ==================================================================================================================== ; Name...........: _WebView2_FrameGetHtmlSource ; Description....: Synchronously retrieves the full HTML source of a frame. @@ -999,6 +1160,8 @@ EndFunc ;==>_NetWebView2_SetBuiltInErrorPageEnabled ; Example .......: No ; =============================================================================================================================== Func _WebView2_FrameGetHtmlSource($oFrame) + Local Const $s_Prefix = "[_WebView2_FrameGetHtmlSource]:" + Local $ERR = 0, $EXT = 0, $RET = False, $MSG = "" ; predefined endpoint results If Not IsObj($oFrame) Then Return SetError(1, 0, "") ; Execute script synchronously @@ -1022,6 +1185,11 @@ Func _WebView2_FrameGetHtmlSource($oFrame) Local $sClean = $oJson.UnescapeString($sRaw) Return $sClean + + + #TODO ENDPOINT REFACTORING + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) + Return SetError($ERR, $EXT, $RET) EndFunc ;==>_WebView2_FrameGetHtmlSource #EndRegion ; === NetWebView2Lib UDF === New Core Method Wrappers @@ -1042,6 +1210,7 @@ EndFunc ;==>_WebView2_FrameGetHtmlSource ; =============================================================================================================================== Func _NetJson_CreateParser($sInitialJson = "{}") Local Const $s_Prefix = "[_NetJson_CreateParser]:" + Local $ERR = 0, $EXT = 0, $RET = False, $MSG = "" ; predefined endpoint results Local $oMyError = ObjEvent("AutoIt.Error", __NetWebView2_COMErrFunc) ; Local COM Error Handler #forceref $oMyError @@ -1052,8 +1221,12 @@ Func _NetJson_CreateParser($sInitialJson = "{}") If @error Then Return SetError(@error, @extended, 0) $oParser.Parse($sInitialJson) - If @error Then __NetWebView2_Log(@ScriptLineNumber, $s_Prefix, 1) + If @error Then __NetWebView2_Log(@ScriptLineNumber, $s_Prefix, 1, $ERR, $EXT) Return $oParser + + #TODO ENDPOINT REFACTORING + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) + Return SetError($ERR, $EXT, $RET) EndFunc ;==>_NetJson_CreateParser ; #FUNCTION# ==================================================================================================================== @@ -1071,18 +1244,23 @@ EndFunc ;==>_NetJson_CreateParser ; =============================================================================================================================== Func _NetJson_DecodeB64($sData) Local Const $s_Prefix = "[_NetJson_DecodeB64]:" + Local $ERR = 0, $EXT = 0, $RET = False, $MSG = "" ; predefined endpoint results Local $oMyError = ObjEvent("AutoIt.Error", __NetWebView2_COMErrFunc) ; Local COM Error Handler #forceref $oMyError Local $oJson = _NetJson_CreateParser() If @error Then - __NetWebView2_Log(@ScriptLineNumber, $s_Prefix, 1) + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix, 1, $ERR, $EXT) Return SetError(@error, @extended, $oJson) EndIf Local $dBinary = $oJson.Decode64($sData) - If @error Then __NetWebView2_Log(@ScriptLineNumber, $s_Prefix, 1) + If @error Then __NetWebView2_Log(@ScriptLineNumber, $s_Prefix, 1, $ERR, $EXT) Return SetError(@error, @extended, $dBinary) + + #TODO ENDPOINT REFACTORING + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) + Return SetError($ERR, $EXT, $RET) EndFunc ;==>_NetJson_DecodeB64 ; #FUNCTION# ==================================================================================================================== @@ -1100,18 +1278,23 @@ EndFunc ;==>_NetJson_DecodeB64 ; =============================================================================================================================== Func _NetJson_EncodeB64($sData) Local Const $s_Prefix = "[_NetJson_EncodeB64]:" + Local $ERR = 0, $EXT = 0, $RET = False, $MSG = "" ; predefined endpoint results Local $oMyError = ObjEvent("AutoIt.Error", __NetWebView2_COMErrFunc) ; Local COM Error Handler #forceref $oMyError Local $oJson = _NetJson_CreateParser() If @error Then - __NetWebView2_Log(@ScriptLineNumber, $s_Prefix, 1) + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix, 1, $ERR, $EXT) Return SetError(@error, @extended, $oJson) EndIf Local $vResult = $oJson.EncodeB64($sData) - If @error Then __NetWebView2_Log(@ScriptLineNumber, $s_Prefix, 1) + If @error Then __NetWebView2_Log(@ScriptLineNumber, $s_Prefix, 1, $ERR, $EXT) Return SetError(@error, @extended, $vResult) + + #TODO ENDPOINT REFACTORING + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) + Return SetError($ERR, $EXT, $RET) EndFunc ;==>_NetJson_EncodeB64 #EndRegion ; === NetWebView2Lib UDF === _NetJson_* functions @@ -1154,6 +1337,7 @@ EndFunc ;==>__NetWebView2_Sleep ; =============================================================================================================================== Func __NetWebView2_WaitForReadyState($oWebV2M, $hTimer, $iTimeOut_ms = 5000) Local Const $s_Prefix = ">>>[_NetWebView2_WaitForReadyState]:" + Local $ERR = 0, $EXT = 0, $RET = False, $MSG = "" ; predefined endpoint results If (Not IsObj($oWebV2M)) Or ObjName($oWebV2M, $OBJ_PROGID) <> 'NetWebView2Lib.WebView2Manager' Then Return SetError(2, 0, False) Local $sReadyState = "" @@ -1165,35 +1349,40 @@ Func __NetWebView2_WaitForReadyState($oWebV2M, $hTimer, $iTimeOut_ms = 5000) ; Check for the 'complete' state If $sReadyState == "complete" Then - __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & " SUCCESS: Document is ready. Timeout_ms: " & Round(TimerDiff($hTimer), 0), 0) + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & " SUCCESS: Document is ready. Timeout_ms: " & Round(TimerDiff($hTimer), 0), 0, $ERR, $EXT) Return True EndIf ; Check for C# Bridge internal errors (Timeout/Init) If StringLeft($sReadyState, 6) == "ERROR:" Then - __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & " BRIDGE " & $sReadyState & " Timeout_ms: " & Round(TimerDiff($hTimer), 0), 1) + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & " BRIDGE " & $sReadyState & " Timeout_ms: " & Round(TimerDiff($hTimer), 0), 1, $ERR, $EXT) Return SetError(3, 0, False) EndIf ; Check for AutoIt-side Timeout If $iTimeOut_ms > 0 And TimerDiff($hTimer) > $iTimeOut_ms Then - __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & " TIMEOUT: Document state is " & $sReadyState & " Timeout_ms: " & Round(TimerDiff($hTimer), 0), 1) + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & " TIMEOUT: Document state is " & $sReadyState & " Timeout_ms: " & Round(TimerDiff($hTimer), 0), 1, $ERR, $EXT) Return SetError(1, 0, False) EndIf __NetWebView2_Sleep(50) If @error Then Return SetError(@error, @extended, '') WEnd + + + #TODO ENDPOINT REFACTORING + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) + Return SetError($ERR, $EXT, $RET) EndFunc ;==>__NetWebView2_WaitForReadyState ; #INTERNAL_USE_ONLY# =========================================================================================================== ; Name...........: __NetWebView2_LastMessage_KEEPER ; Description....: Centralized state manager for WebView2 instances using a static map. -; Syntax ........: __NetWebView2_LastMessage_KEEPER($oWebV2M[, $iMessage = Default[, $iError = @error[, $iExtended = @extended]]]) +; Syntax ........: __NetWebView2_LastMessage_KEEPER($oWebV2M[, $iMessage = Default[, $ERRor = @error[, $EXTended = @extended]]]) ; Parameters ....: $oWebV2M - The NetWebView2 Manager object. ; $iMessage - [optional] Message to SET. If Default, function acts as GET. If -1, performs cleanup. -; $iError - [optional] an integer value. Default is @error. -; $iExtended - [optional] an integer value. Default is @extended. +; $ERRor - [optional] an integer value. Default is @error. +; $EXTended - [optional] an integer value. Default is @extended. ; Author.........: mLipok, ioa747 ; Modified ......: ; Remarks........: Uses a Local COM Error Handler to silently handle "Disposed Object" errors during shutdown. @@ -1201,7 +1390,9 @@ EndFunc ;==>__NetWebView2_WaitForReadyState ; Link ..........: ; Example .......: No ; =============================================================================================================================== -Func __NetWebView2_LastMessage_KEEPER($oWebV2M, $iMessage = Default, $iError = @error, $iExtended = @extended) +Func __NetWebView2_LastMessage_KEEPER($oWebV2M, $iMessage = Default, $ERRor = @error, $EXTended = @extended) + Local Const $s_Prefix = "[__NetWebView2_LastMessage_KEEPER]:" + Local $ERR = 0, $EXT = 0, $RET = False, $MSG = "" ; predefined endpoint results ; Static Map - The central database of status indexed by Window Handle ; Local COM Error Handler to trap 0x80020009 (Disposed Object) during closure Local $oMyError = ObjEvent("AutoIt.Error", __NetWebView2_SilentErrorHandler) @@ -1210,18 +1401,24 @@ Func __NetWebView2_LastMessage_KEEPER($oWebV2M, $iMessage = Default, $iError = @ Local Static $mLastMessegKeeper[] Local $sKey = "" & $oWebV2M.BrowserWindowHandle If $iMessage <> Default Then - __NetWebView2_LastMessage__INTERNALL($mLastMessegKeeper, $sKey, $iMessage, $iError = @error, $iExtended = @extended) + __NetWebView2_LastMessage__INTERNALL($mLastMessegKeeper, $sKey, $iMessage, $ERRor = @error, $EXTended = @extended) __NetWebView2_LastMessage_onReceived($oWebV2M, $iMessage) __NetWebView2_LastMessage_Navigation($oWebV2M, $iMessage) - Return SetError($iError, $iExtended) + Return SetError($ERRor, $EXTended) Else - Return SetError($iError, $iExtended, $mLastMessegKeeper[$sKey]) + Return SetError($ERRor, $EXTended, $mLastMessegKeeper[$sKey]) EndIf + + #TODO ENDPOINT REFACTORING + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) + Return SetError($ERR, $EXT, $RET) EndFunc ;==>__NetWebView2_LastMessage_KEEPER -Func __NetWebView2_LastMessage_onReceived($oWebV2M, $iMessage = Default, $iError = @error, $iExtended = @extended) +Func __NetWebView2_LastMessage_onReceived($oWebV2M, $iMessage = Default, $ERRor = @error, $EXTended = @extended) + Local Const $s_Prefix = ">>>[__NetWebView2_LastMessage_onReceived]:" + Local $ERR = 0, $EXT = 0, $RET = False, $MSG = "" ; predefined endpoint results ; Static Map - The central database of status indexed by Window Handle ; Local COM Error Handler to trap 0x80020009 (Disposed Object) during closure Local $oMyError = ObjEvent("AutoIt.Error", __NetWebView2_SilentErrorHandler) @@ -1232,13 +1429,19 @@ Func __NetWebView2_LastMessage_onReceived($oWebV2M, $iMessage = Default, $iError If $iMessage <> Default Then If $_g_bNetWebView2_DebugDev Then ConsoleWrite('! IFNC: __NetWebView2_LastMessage_onReceived ==> ' & $iMessage & ' Key=' & $sKey & ' SLN=' & @ScriptLineNumber & @CRLF) - __NetWebView2_LastMessage__INTERNALL($mLastMessegReceived, $sKey, $iMessage, $iError = @error, $iExtended = @extended) + __NetWebView2_LastMessage__INTERNALL($mLastMessegReceived, $sKey, $iMessage, $ERRor = @error, $EXTended = @extended) EndIf - Return SetError($iError, $iExtended, $mLastMessegReceived[$sKey]) + Return SetError($ERRor, $EXTended, $mLastMessegReceived[$sKey]) + + #TODO ENDPOINT REFACTORING + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) + Return SetError($ERR, $EXT, $RET) EndFunc ;==>__NetWebView2_LastMessage_onReceived -Func __NetWebView2_LastMessage_Navigation($oWebV2M, $iMessage = Default, $iError = @error, $iExtended = @extended) +Func __NetWebView2_LastMessage_Navigation($oWebV2M, $iMessage = Default, $ERRor = @error, $EXTended = @extended) + Local Const $s_Prefix = ">>>[__NetWebView2_LastMessage_Navigation]:" + Local $ERR = 0, $EXT = 0, $RET = False, $MSG = "" ; predefined endpoint results ; Static Map - The central database of status indexed by Window Handle ; Local COM Error Handler to trap 0x80020009 (Disposed Object) during closure Local $oMyError = ObjEvent("AutoIt.Error", __NetWebView2_SilentErrorHandler) @@ -1249,37 +1452,47 @@ Func __NetWebView2_LastMessage_Navigation($oWebV2M, $iMessage = Default, $iError If $iMessage <> Default Then If $iMessage >= $NETWEBVIEW2_MESSAGE__NAV_STARTING And $iMessage <= $NETWEBVIEW2_MESSAGE__TITLE_CHANGED Then If $_g_bNetWebView2_DebugDev Then ConsoleWrite('! IFNC: __NetWebView2_LastMessage_Navigation ==> ' & $iMessage & ' Key=' & $sKey & ' SLN=' & @ScriptLineNumber & @CRLF) - __NetWebView2_LastMessage__INTERNALL($mLastNavigationMessage, $sKey, $iMessage, $iError = @error, $iExtended = @extended) + __NetWebView2_LastMessage__INTERNALL($mLastNavigationMessage, $sKey, $iMessage, $ERRor = @error, $EXTended = @extended) EndIf EndIf - Return SetError($iError, $iExtended, $mLastNavigationMessage[$sKey]) + Return SetError($ERRor, $EXTended, $mLastNavigationMessage[$sKey]) + + #TODO ENDPOINT REFACTORING + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) + Return SetError($ERR, $EXT, $RET) EndFunc ;==>__NetWebView2_LastMessage_Navigation -Func __NetWebView2_LastMessage__INTERNALL(ByRef $mStatus, $sKey, $iMessage = Default, $iError = @error, $iExtended = @extended) +Func __NetWebView2_LastMessage__INTERNALL(ByRef $mStatus, $sKey, $iMessage = Default, $ERRor = @error, $EXTended = @extended) + Local Const $s_Prefix = ">>>[__NetWebView2_LastMessage__INTERNALL]:" + Local $ERR = 0, $EXT = 0, $RET = False, $MSG = "" ; predefined endpoint results ; If an error occurred while retrieving the Handle (e.g. Object already closed) - If @error Then Return SetError($iError, $iExtended, $NETWEBVIEW2_MESSAGE__NONE) + If @error Then Return SetError($ERRor, $EXTended, $NETWEBVIEW2_MESSAGE__NONE) ; If the handle is invalid - If $sKey = "0" Or $sKey = "" Then Return SetError($iError, $iExtended, $NETWEBVIEW2_MESSAGE__NONE) + If $sKey = "0" Or $sKey = "" Then Return SetError($ERRor, $EXTended, $NETWEBVIEW2_MESSAGE__NONE) ; --- SET MODE (Called from Events or Cleanup) --- If $iMessage <> Default Then ; Special case: -1 for memory cleanup when the instance is closed If $iMessage = -1 Then If MapExists($mStatus, $sKey) Then MapRemove($mStatus, $sKey) - Return SetError($iError, $iExtended, $NETWEBVIEW2_MESSAGE__NONE) + Return SetError($ERRor, $EXTended, $NETWEBVIEW2_MESSAGE__NONE) EndIf ; Update the status for this specific Handle $mStatus[$sKey] = $iMessage - Return SetError($iError, $iExtended, $iMessage) + Return SetError($ERRor, $EXTended, $iMessage) EndIf ; --- GET MODE (Called from LoadWait) --- - If Not MapExists($mStatus, $sKey) Then Return SetError($iError, $iExtended, $NETWEBVIEW2_MESSAGE__NONE) + If Not MapExists($mStatus, $sKey) Then Return SetError($ERRor, $EXTended, $NETWEBVIEW2_MESSAGE__NONE) - Return SetError($iError, $iExtended, $mStatus[$sKey]) + Return SetError($ERRor, $EXTended, $mStatus[$sKey]) + + #TODO ENDPOINT REFACTORING + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) + Return SetError($ERR, $EXT, $RET) EndFunc ;==>__NetWebView2_LastMessage__INTERNALL ; #INTERNAL_USE_ONLY# =========================================================================================================== @@ -1308,8 +1521,8 @@ Func __NetWebView2_Log($s_ScriptLineNumber, $sString, $iErrorNoLineNo = 1, $iErr $sString = "+> ( NetWebView2Lib UDF : SLN=" & $s_ScriptLineNumber & " ) :: " & $sString EndIf EndIf - Local $iReturn = ConsoleWrite($sString & @CRLF) - Return SetError($iError, $iExtended, $iReturn) + ConsoleWrite($sString & @CRLF) + Return SetError($iError, $iExtended) EndFunc ;==>__NetWebView2_Log ; #INTERNAL_USE_ONLY# =========================================================================================================== @@ -1462,6 +1675,8 @@ EndFunc ;==>__Get_Core_Bridge_JS ; Example .......: No ; =============================================================================================================================== Func __NetWebView2_freezer($oWebV2M, ByRef $idPic) + Local Const $s_Prefix = "[__NetWebView2_freezer]:" + Local $ERR = 0, $EXT = 0, $RET = False, $MSG = "" ; predefined endpoint results Local $hWindow_WebView2 = WinGetHandle($oWebV2M.BrowserWindowHandle) #Region ; if $idPic is given then it means you already have it and want to delete it - unfreeze - show WebView2 content If $idPic Then @@ -1504,6 +1719,10 @@ Func __NetWebView2_freezer($oWebV2M, ByRef $idPic) WinSetState($hWindow_WebView2, '', @SW_HIDE) Return $idPic #EndRegion ; freeze $hWindow_WebView2 + + #TODO ENDPOINT REFACTORING + __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) + Return SetError($ERR, $EXT, $RET) EndFunc ;==>__NetWebView2_freezer #EndRegion ; === NetWebView2Lib UDF === #INTERNAL_USE_ONLY# @@ -1955,8 +2174,6 @@ EndFunc ;==>__NetWebView2_Events__OnURLChanged ; Example .......: No ; =============================================================================================================================== Volatile Func __NetWebView2_Events__OnTitleChanged($oWebV2M, $hGUI, $sTITLE) - #forceref $oWebV2M - Local Const $s_Prefix = "[EVENT: OnTitleChanged]: GUI:" & $hGUI & " TITLE: " & $sTITLE __NetWebView2_Log(@ScriptLineNumber, (StringLen($s_Prefix) > 150 ? StringLeft($s_Prefix, 150) & "..." : $s_Prefix), 1) ;~ __NetWebView2_LastMessage_KEEPER($oWebV2M, $NETWEBVIEW2_MESSAGE__TITLE_CHANGED) @@ -2028,7 +2245,6 @@ EndFunc ;==>__NetWebView2_Events__OnNavigationCompleted ; =============================================================================================================================== Volatile Func __NetWebView2_Events__OnContextMenuRequested($oWebV2M, $hGUI, $sLink, $iX, $iY, $sSelection) #forceref $oWebV2M - Local Const $s_Prefix = "[EVENT: OnContextMenuRequested]: GUI:" & $hGUI & " LINK: " & $sLink & " X: " & $iX & " Y: " & $iY & " SELECTION: " & $sSelection __NetWebView2_Log(@ScriptLineNumber, (StringLen($s_Prefix) > 150 ? StringLeft($s_Prefix, 150) & "..." : $s_Prefix), 1) EndFunc ;==>__NetWebView2_Events__OnContextMenuRequested @@ -2050,7 +2266,6 @@ EndFunc ;==>__NetWebView2_Events__OnContextMenuRequested ; =============================================================================================================================== Volatile Func __NetWebView2_Events__OnContextMenu($oWebV2M, $hGUI, $sMenuData) #forceref $oWebV2M - Local Const $s_Prefix = "[EVENT: OnContextMenu]: GUI:" & $hGUI & " MENUDATA: " & $sMenuData __NetWebView2_Log(@ScriptLineNumber, (StringLen($s_Prefix) > 150 ? StringLeft($s_Prefix, 150) & "..." : $s_Prefix), 1) EndFunc ;==>__NetWebView2_Events__OnContextMenu @@ -2240,25 +2455,6 @@ EndFunc ;==>__NetWebView2_Events__OnBasicAuthenticationRequested #EndRegion ; === NetWebView2Lib UDF === EVENT HANDLERS === Browser === #Region ; === NetWebView2Lib UDF === EVENT HANDLERS === Frame Related === -; #INTERNAL_USE_ONLY# =========================================================================================================== -; Name ..........: _NetWebView2_GetFrame -; Description ...: Returns a Frame Object (IWebView2Frame) for the specified index. -; Syntax ........: _NetWebView2_GetFrame($oWebV2M, $iIndex) -; Parameters ....: $oWebV2M - an object. -; $iIndex - an int value. -; Return values .: Frame Object or Null -; Author ........: ioa747 -; Modified ......: -; Remarks .......: -; Related .......: -; Link ..........: -; Example .......: Yes -; =============================================================================================================================== -Func _NetWebView2_GetFrame($oWebV2M, $iIndex) - Local $oFrame = $oWebV2M.GetFrame($iIndex) - Return SetError(@error, @extended, $oFrame) -EndFunc ;==>_NetWebView2_GetFrame - ; #INTERNAL_USE_ONLY# =========================================================================================================== ; Name ..........: __NetWebView2_Events__OnFrameCreated ; Description ...: FrameCreated is raised when a new iframe is created. Handle this event to get access to CoreWebView2Frame objects. From e95313bde3971d654d2f6246a0e4da9016524618 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Lipok?= <11089482+mlipok@users.noreply.github.com> Date: Tue, 24 Mar 2026 22:48:06 +0100 Subject: [PATCH 03/13] Update 001-BasicDemo.au3 --- examples/001-BasicDemo.au3 | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/001-BasicDemo.au3 b/examples/001-BasicDemo.au3 index 3fe48b0..c8312cf 100644 --- a/examples/001-BasicDemo.au3 +++ b/examples/001-BasicDemo.au3 @@ -69,6 +69,7 @@ Func Main() __Example_Log(@ScriptLineNumber, "After: https://w2ww.microsoft.com" & @CRLF) MsgBox($MB_TOPMOST, "TEST #" & @ScriptLineNumber, 'Watch Point - AFTER:' & @CRLF & 'navigate to fake/broken url' & @CRLF & 'HostNameNotResolved') + __Example_Log(@ScriptLineNumber, "END - close window to exit" & @CRLF) ; Main Loop While 1 Switch GUIGetMsg() From 2935e61bef57f80b7ea98b212129bc53379d70e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Lipok?= <11089482+mlipok@users.noreply.github.com> Date: Tue, 24 Mar 2026 22:49:03 +0100 Subject: [PATCH 04/13] Update NetWebView2Lib.au3 --- NetWebView2Lib.au3 | 111 ++++++++++++++++++--------------------------- 1 file changed, 44 insertions(+), 67 deletions(-) diff --git a/NetWebView2Lib.au3 b/NetWebView2Lib.au3 index bea5907..e8543fc 100644 --- a/NetWebView2Lib.au3 +++ b/NetWebView2Lib.au3 @@ -147,6 +147,7 @@ Func _NetWebView2_CreateManager($sUserAgent = '', $s_fnEventPrefix = "", $s_AddB #forceref $oMyError Local $oWebV2M = ObjCreate("NetWebView2Lib.WebView2Manager") ; REGISTERED VERSION + $RET = $oWebV2M If @error Then $ERR = @error $EXT = @extended @@ -624,37 +625,32 @@ Func _NetWebView2_Navigate($oWebV2M, $s_URL, $iWaitMessage = $NETWEBVIEW2_MESSAG Local $oMyError = ObjEvent("AutoIt.Error", __NetWebView2_COMErrFunc) ; Local COM Error Handler #forceref $oMyError - If (Not IsObj($oWebV2M)) Or ObjName($oWebV2M, $OBJ_PROGID) <> 'NetWebView2Lib.WebView2Manager' Then Return SetError(1, 0, "ERROR: Invalid Object") - - ; 1. Parameter Validation - If $iWaitMessage < $NETWEBVIEW2_MESSAGE__INIT_READY Or $iWaitMessage > $NETWEBVIEW2_MESSAGE__TITLE_CHANGED Then ; higher messsages are not for NAVIGATION thus not checking in _NetWebView2_LoadWait() - Return SetError(1, 0, False) - EndIf - - ; 2. Execute Navigation - ; The Local Error Handler catches potential "Disposed Object" crashes here - $oWebV2M.LockWebView() - $oWebV2M.Navigate($s_URL) - If @error Then + If (Not IsObj($oWebV2M)) Or ObjName($oWebV2M, $OBJ_PROGID) <> 'NetWebView2Lib.WebView2Manager' Then + $ERR = 1 + $MSG = "ERROR: Invalid Object" + ELseif $iWaitMessage < $NETWEBVIEW2_MESSAGE__INIT_READY Or $iWaitMessage > $NETWEBVIEW2_MESSAGE__TITLE_CHANGED Then + ; Parameter Validation - higher messsages are not for NAVIGATION thus not checking in _NetWebView2_LoadWait() + $ERR = 2 + $MSG = "ERROR: $iWaitMessage not valid" + Else + ; Execute Navigation + ; The Local Error Handler catches potential "Disposed Object" crashes here + $oWebV2M.LockWebView() + $oWebV2M.Navigate($s_URL) + $ERR = @error + $EXT = @extended + If Not @error Then + ; Wait for status using the BulletProof LoadWait logic + $RET = _NetWebView2_LoadWait($oWebV2M, $iWaitMessage, $sExpectedTitle, $iTimeOut_ms) + $ERR = @error + $EXT = @extended + If @error Then ; If an error occurred (3: Nav Error, 4: Timeout), log the failure + $MSG = " -> LOAD WAIT FAILED" + EndIf + EndIf $oWebV2M.UnLockWebView() - Return SetError(2, @error, False) - EndIf - - ; 3. Wait for status using the Bulletproof LoadWait logic - Local $bResult = _NetWebView2_LoadWait($oWebV2M, $iWaitMessage, $sExpectedTitle, $iTimeOut_ms) - $ERR = @error - $EXT = @extended - - - ; If an error occurred (3: Nav Error, 4: Timeout), log the failure - If @error Then - __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & " -> LOAD WAIT FAILED (Err:" & $ERR & " Ext:" & $EXT & ")", 1, $ERR, $EXT) EndIf - $oWebV2M.UnLockWebView() - Return SetError($ERR, $EXT, $bResult) - - #TODO ENDPOINT REFACTORING __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) Return SetError($ERR, $EXT, $RET) EndFunc ;==>_NetWebView2_Navigate @@ -1123,7 +1119,7 @@ Func _NetWebView2_SetBuiltInErrorPageEnabled($oWebV2M, $bEnabled) Return SetError($ERR, $EXT, $RET) EndFunc ;==>_NetWebView2_SetBuiltInErrorPageEnabled -; #INTERNAL_USE_ONLY# =========================================================================================================== +; #FUNCTION# ==================================================================================================================== ; Name ..........: _NetWebView2_GetFrame ; Description ...: Returns a Frame Object (IWebView2Frame) for the specified index. ; Syntax ........: _NetWebView2_GetFrame($oWebV2M, $iIndex) @@ -1195,25 +1191,6 @@ Func _WebView2_FrameGetHtmlSource($oFrame) Return SetError($ERR, $EXT, $RET) EndFunc ;==>_WebView2_FrameGetHtmlSource -; #INTERNAL_USE_ONLY# =========================================================================================================== -; Name ..........: _NetWebView2_GetFrame -; Description ...: Returns a Frame Object (IWebView2Frame) for the specified index. -; Syntax ........: _NetWebView2_GetFrame($oWebV2M, $iIndex) -; Parameters ....: $oWebV2M - an object. -; $iIndex - an int value. -; Return values .: Frame Object or Null -; Author ........: ioa747 -; Modified ......: -; Remarks .......: -; Related .......: -; Link ..........: -; Example .......: Yes -; =============================================================================================================================== -Func _NetWebView2_GetFrame($oWebV2M, $iIndex) - Local $oFrame = $oWebV2M.GetFrame($iIndex) - Return SetError(@error, @extended, $oFrame) -EndFunc ;==>_NetWebView2_GetFrame - #EndRegion ; === NetWebView2Lib UDF === New Core Method Wrappers #Region ; === NetWebView2Lib UDF === _NetJson_* functions @@ -1403,8 +1380,8 @@ EndFunc ;==>__NetWebView2_WaitForReadyState ; Syntax ........: __NetWebView2_LastMessage_KEEPER($oWebV2M[, $iMessage = Default[, $iError = @error[, $iExtended = @extended]]]) ; Parameters ....: $oWebV2M - The NetWebView2 Manager object. ; $iMessage - [optional] Message to SET. If Default, function acts as GET. If -1, performs cleanup. -; $ERRor - [optional] an integer value. Default is @error. -; $EXTended - [optional] an integer value. Default is @extended. +; $iError - [optional] an integer value. Default is @error. +; $iExtended - [optional] an integer value. Default is @extended. ; Author.........: mLipok, ioa747 ; Modified ......: ; Remarks........: Uses a Local COM Error Handler to silently handle "Disposed Object" errors during shutdown. @@ -1412,7 +1389,7 @@ EndFunc ;==>__NetWebView2_WaitForReadyState ; Link ..........: ; Example .......: No ; =============================================================================================================================== -Func __NetWebView2_LastMessage_KEEPER($oWebV2M, $iMessage = Default, $ERRor = @error, $EXTended = @extended) +Func __NetWebView2_LastMessage_KEEPER($oWebV2M, $iMessage = Default, $iError = @error, $iExtended = @extended) Local Const $s_Prefix = "[__NetWebView2_LastMessage_KEEPER]:" Local $ERR = 0, $EXT = 0, $RET = False, $MSG = "" ; predefined endpoint results ; Static Map - The central database of status indexed by Window Handle @@ -1423,13 +1400,13 @@ Func __NetWebView2_LastMessage_KEEPER($oWebV2M, $iMessage = Default, $ERRor = @e Local Static $mLastMessegKeeper[] Local $sKey = "" & $oWebV2M.BrowserWindowHandle If $iMessage <> Default Then - __NetWebView2_LastMessage__INTERNALL($mLastMessegKeeper, $sKey, $iMessage, $ERRor = @error, $EXTended = @extended) + __NetWebView2_LastMessage__INTERNALL($mLastMessegKeeper, $sKey, $iMessage, $iError = @error, $iExtended = @extended) __NetWebView2_LastMessage_onReceived($oWebV2M, $iMessage) __NetWebView2_LastMessage_Navigation($oWebV2M, $iMessage) - Return SetError($ERRor, $EXTended) + Return SetError($iError, $iExtended) Else - Return SetError($ERRor, $EXTended, $mLastMessegKeeper[$sKey]) + Return SetError($iError, $iExtended, $mLastMessegKeeper[$sKey]) EndIf @@ -1438,7 +1415,7 @@ Func __NetWebView2_LastMessage_KEEPER($oWebV2M, $iMessage = Default, $ERRor = @e Return SetError($ERR, $EXT, $RET) EndFunc ;==>__NetWebView2_LastMessage_KEEPER -Func __NetWebView2_LastMessage_onReceived($oWebV2M, $iMessage = Default, $ERRor = @error, $EXTended = @extended) +Func __NetWebView2_LastMessage_onReceived($oWebV2M, $iMessage = Default, $iError = @error, $iExtended = @extended) Local Const $s_Prefix = ">>>[__NetWebView2_LastMessage_onReceived]:" Local $ERR = 0, $EXT = 0, $RET = False, $MSG = "" ; predefined endpoint results ; Static Map - The central database of status indexed by Window Handle @@ -1451,17 +1428,17 @@ Func __NetWebView2_LastMessage_onReceived($oWebV2M, $iMessage = Default, $ERRor If $iMessage <> Default Then If $_g_bNetWebView2_DebugDev Then ConsoleWrite('! IFNC: __NetWebView2_LastMessage_onReceived ==> ' & $iMessage & ' Key=' & $sKey & ' SLN=' & @ScriptLineNumber & @CRLF) - __NetWebView2_LastMessage__INTERNALL($mLastMessegReceived, $sKey, $iMessage, $ERRor = @error, $EXTended = @extended) + __NetWebView2_LastMessage__INTERNALL($mLastMessegReceived, $sKey, $iMessage, $iError = @error, $iExtended = @extended) EndIf - Return SetError($ERRor, $EXTended, $mLastMessegReceived[$sKey]) + Return SetError($iError, $iExtended, $mLastMessegReceived[$sKey]) #TODO ENDPOINT REFACTORING __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) Return SetError($ERR, $EXT, $RET) EndFunc ;==>__NetWebView2_LastMessage_onReceived -Func __NetWebView2_LastMessage_Navigation($oWebV2M, $iMessage = Default, $ERRor = @error, $EXTended = @extended) +Func __NetWebView2_LastMessage_Navigation($oWebV2M, $iMessage = Default, $iError = @error, $iExtended = @extended) Local Const $s_Prefix = ">>>[__NetWebView2_LastMessage_Navigation]:" Local $ERR = 0, $EXT = 0, $RET = False, $MSG = "" ; predefined endpoint results ; Static Map - The central database of status indexed by Window Handle @@ -1474,43 +1451,43 @@ Func __NetWebView2_LastMessage_Navigation($oWebV2M, $iMessage = Default, $ERRor If $iMessage <> Default Then If $iMessage >= $NETWEBVIEW2_MESSAGE__NAV_STARTING And $iMessage <= $NETWEBVIEW2_MESSAGE__TITLE_CHANGED Then If $_g_bNetWebView2_DebugDev Then ConsoleWrite('! IFNC: __NetWebView2_LastMessage_Navigation ==> ' & $iMessage & ' Key=' & $sKey & ' SLN=' & @ScriptLineNumber & @CRLF) - __NetWebView2_LastMessage__INTERNALL($mLastNavigationMessage, $sKey, $iMessage, $ERRor = @error, $EXTended = @extended) + __NetWebView2_LastMessage__INTERNALL($mLastNavigationMessage, $sKey, $iMessage, $iError = @error, $iExtended = @extended) EndIf EndIf - Return SetError($ERRor, $EXTended, $mLastNavigationMessage[$sKey]) + Return SetError($iError, $iExtended, $mLastNavigationMessage[$sKey]) #TODO ENDPOINT REFACTORING __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) Return SetError($ERR, $EXT, $RET) EndFunc ;==>__NetWebView2_LastMessage_Navigation -Func __NetWebView2_LastMessage__INTERNALL(ByRef $mStatus, $sKey, $iMessage = Default, $ERRor = @error, $EXTended = @extended) +Func __NetWebView2_LastMessage__INTERNALL(ByRef $mStatus, $sKey, $iMessage = Default, $iError = @error, $iExtended = @extended) Local Const $s_Prefix = ">>>[__NetWebView2_LastMessage__INTERNALL]:" Local $ERR = 0, $EXT = 0, $RET = False, $MSG = "" ; predefined endpoint results ; If an error occurred while retrieving the Handle (e.g. Object already closed) - If @error Then Return SetError($ERRor, $EXTended, $NETWEBVIEW2_MESSAGE__NONE) + If @error Then Return SetError($iError, $iExtended, $NETWEBVIEW2_MESSAGE__NONE) ; If the handle is invalid - If $sKey = "0" Or $sKey = "" Then Return SetError($ERRor, $EXTended, $NETWEBVIEW2_MESSAGE__NONE) + If $sKey = "0" Or $sKey = "" Then Return SetError($iError, $iExtended, $NETWEBVIEW2_MESSAGE__NONE) ; --- SET MODE (Called from Events or Cleanup) --- If $iMessage <> Default Then ; Special case: -1 for memory cleanup when the instance is closed If $iMessage = -1 Then If MapExists($mStatus, $sKey) Then MapRemove($mStatus, $sKey) - Return SetError($ERRor, $EXTended, $NETWEBVIEW2_MESSAGE__NONE) + Return SetError($iError, $iExtended, $NETWEBVIEW2_MESSAGE__NONE) EndIf ; Update the status for this specific Handle $mStatus[$sKey] = $iMessage - Return SetError($ERRor, $EXTended, $iMessage) + Return SetError($iError, $iExtended, $iMessage) EndIf ; --- GET MODE (Called from LoadWait) --- - If Not MapExists($mStatus, $sKey) Then Return SetError($ERRor, $EXTended, $NETWEBVIEW2_MESSAGE__NONE) + If Not MapExists($mStatus, $sKey) Then Return SetError($iError, $iExtended, $NETWEBVIEW2_MESSAGE__NONE) - Return SetError($ERRor, $EXTended, $mStatus[$sKey]) + Return SetError($iError, $iExtended, $mStatus[$sKey]) #TODO ENDPOINT REFACTORING __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) From 52c255eae236a23d93cc66950b7c0ddeb5bdea24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Lipok?= <11089482+mlipok@users.noreply.github.com> Date: Tue, 24 Mar 2026 23:03:22 +0100 Subject: [PATCH 05/13] Update 003-Multi-Basic.au3 --- examples/003-Multi-Basic.au3 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/003-Multi-Basic.au3 b/examples/003-Multi-Basic.au3 index 6928d82..fdccf42 100644 --- a/examples/003-Multi-Basic.au3 +++ b/examples/003-Multi-Basic.au3 @@ -99,7 +99,7 @@ Func __UserEventHandler_Web1__Bridge__OnMessageReceived($oWebView, $hWindow, $sM $iMsgCnt += 1 _UpdateWebUI($oWebView, "mainTitle", "Counter: " & $iMsgCnt) _UpdateWebUI($oWebView, "statusMsg", "Last Message: " & $sMsg) - If $sMsg = "PING" Then + If $sMsg = "PING" Then ; intentional flickering to show that Web1 work differently than Web2 GUISetState(@SW_HIDE, $hWindow) Sleep(200) GUISetState(@SW_SHOW, $hWindow) From 35e4813326e45f0530f131645eeebaa68b534598 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Lipok?= <11089482+mlipok@users.noreply.github.com> Date: Tue, 24 Mar 2026 23:11:42 +0100 Subject: [PATCH 06/13] Update 003-Multi-Basic.au3 --- examples/003-Multi-Basic.au3 | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/003-Multi-Basic.au3 b/examples/003-Multi-Basic.au3 index fdccf42..a4ef6d2 100644 --- a/examples/003-Multi-Basic.au3 +++ b/examples/003-Multi-Basic.au3 @@ -32,6 +32,7 @@ Func _Main() ConsoleWrite("! BrowserWindowHandle = " & $oWeb_2.BrowserWindowHandle & @CRLF) _NetWebView2_NavigateToString($oWeb_2, _GetDemoHTML("Browser 2 Content")) + __Example_Log(@ScriptLineNumber, "END - close window to exit" & @CRLF) ; --- Main Loop --- While 1 Switch GUIGetMsg() From d9e2071c870908d06f4d5bc7fa33bc447c692e3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Lipok?= <11089482+mlipok@users.noreply.github.com> Date: Tue, 24 Mar 2026 23:12:27 +0100 Subject: [PATCH 07/13] Update 007-HTTP_StatusCodeTracking.au3 --- examples/007-HTTP_StatusCodeTracking.au3 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/007-HTTP_StatusCodeTracking.au3 b/examples/007-HTTP_StatusCodeTracking.au3 index 383425d..0bfd7da 100644 --- a/examples/007-HTTP_StatusCodeTracking.au3 +++ b/examples/007-HTTP_StatusCodeTracking.au3 @@ -34,11 +34,11 @@ Func _Example_HTTP_Tracking() ; Very important to prevent the GUI from getting stuck by hundreds of requests (images, scripts, etc.) $oWebV2M.HttpStatusCodeDocumentOnly = True + GUISetState(@SW_SHOW) ; Testing with a non-existent page to see the 404 _NetWebView2_Navigate($oWebV2M, "https://google.com/this-page-does-not-exist") - GUISetState(@SW_SHOW) - + __Example_Log(@ScriptLineNumber, "END - close window to exit" & @CRLF) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE From df6f781d73bd6661aea69f7acc1511a96a8b9a62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Lipok?= <11089482+mlipok@users.noreply.github.com> Date: Tue, 24 Mar 2026 23:13:15 +0100 Subject: [PATCH 08/13] Update 006-DownloadDemo.au3 --- examples/006-DownloadDemo.au3 | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/examples/006-DownloadDemo.au3 b/examples/006-DownloadDemo.au3 index 472be71..18379df 100644 --- a/examples/006-DownloadDemo.au3 +++ b/examples/006-DownloadDemo.au3 @@ -53,8 +53,11 @@ Func _Example() $oWebV2M.SetDownloadPath(@ScriptDir & "\Downloads_Test") ; navigate to the page - _NetWebView2_Navigate($oWebV2M, "https://www.libreoffice.org/donate/dl/win-x86_64/25.8.4/en-US/LibreOffice_25.8.4_Win_x86-64.msi", $NETWEBVIEW2_MESSAGE__NAV_STARTING) +;~ _NetWebView2_Navigate($oWebV2M, "https://www.libreoffice.org/donate/dl/win-x86_64/25.8.4/en-US/LibreOffice_25.8.4_Win_x86-64.msi", $NETWEBVIEW2_MESSAGE__NAV_STARTING) + _NetWebView2_Navigate($oWebV2M, "https://www.libreoffice.org/donate/dl/win-x86_64/26.2.1/pl/LibreOffice_26.2.1_Win_x86-64.msi", $NETWEBVIEW2_MESSAGE__NAV_STARTING) + #TODO AutoDetermine MSI file location + __Example_Log(@ScriptLineNumber, "END - close window to exit" & @CRLF) #Region ; GUI Loop ; Main Loop While 1 From 959af16f9ddec658917a70f7da27254a4e3c352a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Lipok?= <11089482+mlipok@users.noreply.github.com> Date: Tue, 24 Mar 2026 23:16:27 +0100 Subject: [PATCH 09/13] Update NetWebView2Lib.au3 --- NetWebView2Lib.au3 | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/NetWebView2Lib.au3 b/NetWebView2Lib.au3 index e8543fc..994f8a3 100644 --- a/NetWebView2Lib.au3 +++ b/NetWebView2Lib.au3 @@ -151,7 +151,7 @@ Func _NetWebView2_CreateManager($sUserAgent = '', $s_fnEventPrefix = "", $s_AddB If @error Then $ERR = @error $EXT = @extended - $MSG = "Manager Creation ERROR : #SLN=" & @ScriptLineNumber + $MSG = "Manager Creation Error : #SLN=" & @ScriptLineNumber Else ; Enable/Disable diagnostic logging ; When enabled, the console will show entries like: +++[NetWebView2Lib][HANDLE:0x...][HH:mm:ss.fff] Message @@ -679,27 +679,30 @@ Func _NetWebView2_NavigateToString($oWebV2M, $s_HTML, $iWaitMessage = $NETWEBVIE Local $oMyError = ObjEvent("AutoIt.Error", __NetWebView2_COMErrFunc) ; Local COM Error Handler #forceref $oMyError - If (Not IsObj($oWebV2M)) Or ObjName($oWebV2M, $OBJ_PROGID) <> 'NetWebView2Lib.WebView2Manager' Then Return SetError(1, 0, "ERROR: Invalid Object") - - If $iWaitMessage < $NETWEBVIEW2_MESSAGE__INIT_READY Then - Return SetError(1) + If (Not IsObj($oWebV2M)) Or ObjName($oWebV2M, $OBJ_PROGID) <> 'NetWebView2Lib.WebView2Manager' Then + $ERR = 1 + $MSG = " Invalid Object Error: #SLN=" & @ScriptLineNumber + ElseIf $iWaitMessage < $NETWEBVIEW2_MESSAGE__INIT_READY Then + $ERR = 2 + $MSG = " $iWaitMessage Error: #SLN=" & @ScriptLineNumber ElseIf $iWaitMessage > $NETWEBVIEW2_MESSAGE__TITLE_CHANGED Then ; higher messsages are not for NAVIGATION thus not checking in _NetWebView2_LoadWait() - Return SetError(2) + $ERR = 3 + $MSG = " $iWaitMessage Error: #SLN=" & @ScriptLineNumber Else $oWebV2M.LockWebView() $RET = $oWebV2M.NavigateToString($s_HTML) $ERR = @error - If Not $ERR Then + If $ERR Then + $MSG = " NavigateToString Error: #SLN=" & @ScriptLineNumber + Else _NetWebView2_LoadWait($oWebV2M, $iWaitMessage, $sExpectedTitle, $iTimeOut_ms) $ERR = @error $EXT = @extended - $oWebV2M.UnLockWebView() - If $ERR Then __NetWebView2_Log(@ScriptLineNumber, $s_Prefix, 1, $ERR, $EXT) - Return SetError($ERR, $EXT, $RET) + $MSG = " LoadWait internal Error: #SLN=" & @ScriptLineNumber EndIf + $oWebV2M.UnLockWebView() EndIf - #TODO ENDPOINT REFACTORING __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $MSG, 1, $ERR, $EXT) Return SetError($ERR, $EXT, $RET) EndFunc ;==>_NetWebView2_NavigateToString From 04dd4c8d450b2082c34e930b510e6296fd244979 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Lipok?= <11089482+mlipok@users.noreply.github.com> Date: Tue, 24 Mar 2026 23:18:58 +0100 Subject: [PATCH 10/13] Update 003-Multi-Basic.au3 --- examples/003-Multi-Basic.au3 | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/examples/003-Multi-Basic.au3 b/examples/003-Multi-Basic.au3 index a4ef6d2..77ae17c 100644 --- a/examples/003-Multi-Basic.au3 +++ b/examples/003-Multi-Basic.au3 @@ -141,3 +141,9 @@ Func __UserEventHandler_Web2__Bridge__OnMessageReceived($oWebView, $hWindow, $sM EndIf EndFunc ;==>__UserEventHandler_Web2__Bridge__OnMessageReceived #EndRegion ; USER DEFINED EVENTS HANDLER FUNCTION + +Func __Example_Log($s_ScriptLineNumber, $sString, $iError = @error, $iExtended = @extended) + ConsoleWrite(@ScriptName & ' SLN=' & $s_ScriptLineNumber & ' [' & $iError & '/' & $iExtended & '] ::: ' & $sString & @CRLF) + Return SetError($iError, $iExtended, '') +EndFunc ;==>__Example_Log + From a39dcf08db8f11020d1acdf958beaa34b8da6901 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Lipok?= <11089482+mlipok@users.noreply.github.com> Date: Tue, 24 Mar 2026 23:19:32 +0100 Subject: [PATCH 11/13] Update 006-DownloadDemo.au3 --- examples/006-DownloadDemo.au3 | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/examples/006-DownloadDemo.au3 b/examples/006-DownloadDemo.au3 index 18379df..49ace65 100644 --- a/examples/006-DownloadDemo.au3 +++ b/examples/006-DownloadDemo.au3 @@ -151,3 +151,8 @@ Volatile Func __UserEventHandler__OnAcceleratorKeyPressed($oWebV2M, $hGUI, $oArg $oArgs = 0 ; Explicitly release the COM reference inside the volatile scope EndFunc ;==>__UserEventHandler__OnAcceleratorKeyPressed + +Func __Example_Log($s_ScriptLineNumber, $sString, $iError = @error, $iExtended = @extended) + ConsoleWrite(@ScriptName & ' SLN=' & $s_ScriptLineNumber & ' [' & $iError & '/' & $iExtended & '] ::: ' & $sString & @CRLF) + Return SetError($iError, $iExtended, '') +EndFunc ;==>__Example_Log From 202cd61465a5ec177997a6acc1fd3dc00bb44470 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Lipok?= <11089482+mlipok@users.noreply.github.com> Date: Tue, 24 Mar 2026 23:21:09 +0100 Subject: [PATCH 12/13] Update 008-JavaScript.au3 --- examples/008-JavaScript.au3 | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/examples/008-JavaScript.au3 b/examples/008-JavaScript.au3 index a33af56..4e463a5 100644 --- a/examples/008-JavaScript.au3 +++ b/examples/008-JavaScript.au3 @@ -39,6 +39,8 @@ Func _Example_Console_Redirect() _NetWebView2_ExecuteScript($oWebV2M, "console.log('Hello from JavaScript to AutoIt Console!');") _NetWebView2_ExecuteScript($oWebV2M, "console.error('This is a test error message');") + __Example_Log(@ScriptLineNumber, "END - close window to exit" & @CRLF) + ; --- Main Loop --- While 1 Switch GUIGetMsg() @@ -61,3 +63,7 @@ Func __UserEventHandler_Bridge__OnMessageReceived($oWebV2M, $hGUI, $sMsg) EndIf EndFunc ;==>__UserEventHandler_Bridge__OnMessageReceived +Func __Example_Log($s_ScriptLineNumber, $sString, $iError = @error, $iExtended = @extended) + ConsoleWrite(@ScriptName & ' SLN=' & $s_ScriptLineNumber & ' [' & $iError & '/' & $iExtended & '] ::: ' & $sString & @CRLF) + Return SetError($iError, $iExtended, '') +EndFunc ;==>__Example_Log From bc6ff6fe2a88c6b0b05c4a0166cc8a13f22732a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Lipok?= <11089482+mlipok@users.noreply.github.com> Date: Tue, 24 Mar 2026 23:30:41 +0100 Subject: [PATCH 13/13] Update NetWebView2Lib.au3 --- NetWebView2Lib.au3 | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/NetWebView2Lib.au3 b/NetWebView2Lib.au3 index 994f8a3..cdb3c58 100644 --- a/NetWebView2Lib.au3 +++ b/NetWebView2Lib.au3 @@ -371,14 +371,14 @@ Func _NetWebView2_CleanUp(ByRef $oWebV2M, ByRef $oJSBridge) $ERR = 2 $EXT = 1 $MSG = " ! NetWebView2Lib.WebView2Manager object has invalid ProgID : #SLN=" & @ScriptLineNumber - ElseIf Not IsObj($oJSBridge) Then - $ERR = 3 - $EXT = 2 - $MSG = " ! NetWebView2Lib.WebView2Bridge is not object : #SLN=" & @ScriptLineNumber - ElseIf ObjName($oJSBridge, $OBJ_PROGID) <> "NetWebView2Lib.WebView2Bridge" Then - $ERR = 4 - $EXT = 2 - $MSG = " ! NebView2Lib.WebView2Bridge object has invalid ProgID : #SLN=" & @ScriptLineNumber +;~ ElseIf Not IsObj($oJSBridge) Then ; $oJSBridge usage is optional +;~ $ERR = 3 +;~ $EXT = 2 +;~ $MSG = " ! NetWebView2Lib.WebView2Bridge is not object : #SLN=" & @ScriptLineNumber +;~ ElseIf ObjName($oJSBridge, $OBJ_PROGID) <> "NetWebView2Lib.WebView2Bridge" Then ; $oJSBridge usage is optional +;~ $ERR = 4 +;~ $EXT = 2 +;~ $MSG = " ! NebView2Lib.WebView2Bridge object has invalid ProgID : #SLN=" & @ScriptLineNumber Else _NetWebView2_SetLockState($oWebV2M, True) $RET = $oWebV2M.Cleanup()