Skip to content

Commit 4c053f2

Browse files
authored
Update NetWebView2Lib.au3
1 parent 69b8312 commit 4c053f2

1 file changed

Lines changed: 40 additions & 10 deletions

File tree

NetWebView2Lib.au3

Lines changed: 40 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,13 @@ Global $_g_sNetWebView2_User_JSEvents = ""
2020
Global $_g_sNetWebView2_User_WebViewEvents = ""
2121
Global $_g_oWeb
2222

23+
Global Enum _
24+
$WEBVIEW2__NAVSTATUS__READY, _
25+
$WEBVIEW2__NAVSTATUS__STARTING, _
26+
$WEBVIEW2__NAVSTATUS__URL_CHANGED, _
27+
$WEBVIEW2__NAVSTATUS__COMPLETED, _
28+
$WEBVIEW2__NAVSTATUS__TITLE_CHANGED
29+
2330
#Region ; NetWebView2Lib UDF - core function
2431
Func _NetWebView2_StartUp($sDLLFileFullPath)
2532
#RegistrationFree is WorkInProgress
@@ -73,7 +80,7 @@ Func _NetWebView2_Initialize(ByRef $oWebV2M, $hGUI, $sProfileDirectory, $i_Left
7380
Local $iInit = $oWebV2M.Initialize(($hGUI), $sProfileDirectory, $i_Left, $i_Top, $i_Width, $i_Height)
7481
If @error Then Return SetError(@error, @extended, $iInit)
7582

76-
If $b_LoadWait Then _NetWebView2_LoadWait($oWebV2M)
83+
If $b_LoadWait Then _NetWebView2_LoadWait($oWebV2M, $WEBVIEW2__NAVSTATUS__READY)
7784
If @error Then Return SetError(@error, @extended, $iInit)
7885

7986
; WebView2 Configuration
@@ -209,8 +216,10 @@ EndFunc ;==>_NetWebView2_CleanUp
209216
; #FUNCTION# ====================================================================================================================
210217
; Name ..........: _NetWebView2_LoadWait
211218
; Description ...:
212-
; Syntax ........: _NetWebView2_LoadWait(ByRef $oWebV2M)
219+
; Syntax ........: _NetWebView2_LoadWait(ByRef $oWebV2M, $iStatus)
220+
; Syntax ........: _NetWebView2_LoadWait(ByRef $oWebV2M[, $iStatus = $WEBVIEW2__NAVSTATUS__READY])
213221
; Parameters ....: $oWebV2M - [in/out] an object.
222+
; $iStatus - [optional] an integer value. Default is $WEBVIEW2__NAVSTATUS__READY.
214223
; Return values .: None
215224
; Author ........: mLipok, ioa747
216225
; Modified ......:
@@ -219,15 +228,21 @@ EndFunc ;==>_NetWebView2_CleanUp
219228
; Link ..........:
220229
; Example .......: No
221230
; ===============================================================================================================================
222-
Func _NetWebView2_LoadWait(ByRef $oWebV2M)
231+
Func _NetWebView2_LoadWait(ByRef $oWebV2M, $iStatus = $WEBVIEW2__NAVSTATUS__READY)
223232
Local $oMyError = ObjEvent("AutoIt.Error", __NetWebView2_COMErrFunc) ; Local COM Error Handler
224233
#forceref $oMyError
225234

226235
; Wait for WebView2 to be ready
227236
While Sleep(10)
228-
If $oWebV2M.IsReady Then ExitLoop
229-
If @error Then Return SetError(@error, @extended, -1)
237+
If $oWebV2M.IsReady Then
238+
If $iStatus == $WEBVIEW2__NAVSTATUS__READY Or _NetWebView2_NavigationStatus() >= $iStatus Then
239+
ExitLoop
240+
EndIf
241+
EndIf
242+
;~ If @error Then Return SetError(@error, @extended, -1)
230243
WEnd
244+
If $_g_bNetWebView2_DebugInfo Then ConsoleWrite("! After _NetWebView2_LoadWait("&$iStatus&") ::: _NetWebView2_NavigationStatus()=" & _NetWebView2_NavigationStatus() & @CRLF)
245+
_NetWebView2_NavigationStatus($WEBVIEW2__NAVSTATUS__READY)
231246

232247
EndFunc ;==>_NetWebView2_LoadWait
233248

@@ -253,7 +268,7 @@ Func _NetWebView2_Navigate(ByRef $oWebV2M, $sURL, $b_LoadWait = True)
253268
Local $iNavigation = $oWebV2M.Navigate($sURL)
254269
If @error Then Return SetError(@error, @extended, $iNavigation)
255270

256-
If $b_LoadWait Then _NetWebView2_LoadWait($oWebV2M)
271+
If $b_LoadWait Then _NetWebView2_LoadWait($oWebV2M, $WEBVIEW2__NAVSTATUS__TITLE_CHANGED)
257272
Return SetError(@error, @extended, '')
258273
EndFunc ;==>_NetWebView2_Navigate
259274

@@ -276,12 +291,22 @@ Func _NetWebView2_NavigateToString(ByRef $oWebV2M, $s_HTML, $b_LoadWait = True)
276291
Local $oMyError = ObjEvent("AutoIt.Error", __NetWebView2_COMErrFunc) ; Local COM Error Handler
277292
#forceref $oMyError
278293

279-
Local $iNavigation = $oWebV2M.NavigateToString($s_HTML)
294+
Local $iNavigation = $oWebV2M.NavigateToString($s_HTML, $WEBVIEW2__NAVSTATUS__TITLE_CHANGED)
280295
If @error Then Return SetError(@error, @extended, $iNavigation)
281296

282297
If $b_LoadWait Then _NetWebView2_LoadWait($oWebV2M)
283298
Return SetError(@error, @extended, '')
284299
EndFunc ;==>_NetWebView2_NavigateToString
300+
301+
Func _NetWebView2_NavigationStatus($iStatus = Default, $iError = @error, $iExtended = @extended)
302+
Local Static $i_static = $WEBVIEW2__NAVSTATUS__READY
303+
If $iStatus = Default Then Return SetError($iError, $iExtended, $i_static)
304+
305+
$i_static = $iStatus
306+
Return SetError($iError, $iExtended, $i_static)
307+
EndFunc ;==>_NetWebView2_NavigationStatus
308+
309+
285310
#EndRegion ; NetWebView2Lib UDF - core function
286311

287312
#Region ; NetWebView2Lib UDF - helper function
@@ -406,18 +431,23 @@ Func __NetWebView2_WebViewEvents__OnMessageReceived($sMsg)
406431
Switch $sCommand
407432
Case "INIT_READY"
408433
__NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $sData, 1)
409-
410-
#QUESTION Why here ExecuteScript ?
411-
$_g_oWeb.ExecuteScript('window.chrome.webview.postMessage(JSON.stringify({ "type": "COM_TEST", "status": "OK" }));')
434+
_NetWebView2_NavigationStatus($WEBVIEW2__NAVSTATUS__READY)
412435

413436
Case "NAV_STARTING"
414437
__NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $sData, 1)
438+
_NetWebView2_NavigationStatus($WEBVIEW2__NAVSTATUS__STARTING)
439+
440+
Case "URL_CHANGED"
441+
__NetWebView2_Log(@ScriptLineNumber, $s_Prefix & " ?? " & $sData, 1)
442+
_NetWebView2_NavigationStatus($WEBVIEW2__NAVSTATUS__URL_CHANGED)
415443

416444
Case "NAV_COMPLETED"
417445
__NetWebView2_Log(@ScriptLineNumber, $s_Prefix & " ?? " & $sData, 1)
446+
_NetWebView2_NavigationStatus($WEBVIEW2__NAVSTATUS__COMPLETED)
418447

419448
Case "TITLE_CHANGED"
420449
__NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $sData, 1)
450+
_NetWebView2_NavigationStatus($WEBVIEW2__NAVSTATUS__TITLE_CHANGED)
421451
; If you want to change the title of your GUI based on the page
422452
;~ If $aParts[0] > 1 Then WinSetTitle($hGUI, "", "WebView2 - " & $aParts[2])
423453

0 commit comments

Comments
 (0)