Skip to content

Commit 81adf62

Browse files
authored
Merge pull request #17 from mlipok/UDF-UPDATE
UDF update
2 parents 9fac232 + 135418a commit 81adf62

2 files changed

Lines changed: 95 additions & 23 deletions

File tree

NetWebView2Lib.au3

Lines changed: 92 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ Func _NetWebView2_CreateManager($sUserAgent = '', $s_fnEventPrefix = "", $s_AddB
9999
;~ __NetWebView2_ObjName_FlagsValue($oWebV2M)
100100
If @error Then __NetWebView2_Log(@ScriptLineNumber, "! [NetWebView2Lib]: Manager Creation ERROR", 1)
101101
If $sUserAgent Then $oWebV2M.SetUserAgent($sUserAgent)
102-
If $s_AddBrowserArgs Then $oWebV2M.AdditionalBrowserArguments = $s_AddBrowserArgs
102+
If $s_AddBrowserArgs Then $oWebV2M.AdditionalBrowserArguments= $s_AddBrowserArgs
103103
If $s_fnEventPrefix Then $_g_sNetWebView2_User_WebViewEvents = $s_fnEventPrefix
104104
ObjEvent($oWebV2M, "__NetWebView2_WebViewEvents__", "IWebViewEvents")
105105
Return SetError(@error, @extended, $oWebV2M)
@@ -218,14 +218,14 @@ EndFunc ;==>_NetWebView2_CleanUp
218218
; Example .......: No
219219
; ===============================================================================================================================
220220
Func _NetWebView2_LoadWait(ByRef $oWebV2M, $iStatus = $WEBVIEW2__NAVSTATUS__READY)
221-
Local Const $s_Prefix = '_NetWebView2_LoadWait: iStatus:' & $iStatus
221+
Local Const $s_Prefix = "[_NetWebView2_LoadWait]: iStatus:" & $iStatus
222222
Local $oMyError = ObjEvent("AutoIt.Error", __NetWebView2_COMErrFunc) ; Local COM Error Handler
223223
#forceref $oMyError
224224

225225
; Wait for WebView2 to be ready
226226
While Sleep(10)
227227
If $oWebV2M.IsReady Then
228-
If $iStatus == $WEBVIEW2__NAVSTATUS__READY Or __NetWebView2_NavigationStatus() >= $iStatus Then
228+
If __NetWebView2_NavigationStatus() >= $iStatus Then
229229
ExitLoop
230230
EndIf
231231
EndIf
@@ -252,21 +252,39 @@ EndFunc ;==>_NetWebView2_LoadWait
252252
; Example .......: No
253253
; ===============================================================================================================================
254254
Func _NetWebView2_Navigate(ByRef $oWebV2M, $sURL, $b_LoadWait = True)
255+
Local Const $s_Prefix = "[_NetWebView2_LoadWait]: URL:" & $sURL & " WAIT:" &$b_LoadWait
255256
Local $oMyError = ObjEvent("AutoIt.Error", __NetWebView2_COMErrFunc) ; Local COM Error Handler
256257
#forceref $oMyError
257258

258259
Local $iNavigation = $oWebV2M.Navigate($sURL)
260+
If @error Then __NetWebView2_Log(@ScriptLineNumber, $s_Prefix, 1)
259261
If @error Then Return SetError(@error, @extended, $iNavigation)
260262

261263
If $b_LoadWait Then _NetWebView2_LoadWait($oWebV2M, $WEBVIEW2__NAVSTATUS__TITLE_CHANGED)
264+
If @error Then __NetWebView2_Log(@ScriptLineNumber, $s_Prefix, 1)
262265
Return SetError(@error, @extended, '')
263266
EndFunc ;==>_NetWebView2_Navigate
264267

268+
; #FUNCTION# ====================================================================================================================
269+
; Name ..........: _NetWebView2_GetSource
270+
; Description ...:
271+
; Syntax ........: _NetWebView2_GetSource(ByRef $oWebV2M)
272+
; Parameters ....: $oWebV2M - [in/out] an object.
273+
; Return values .: None
274+
; Author ........: mLipok
275+
; Modified ......:
276+
; Remarks .......:
277+
; Related .......:
278+
; Link ..........:
279+
; Example .......: No
280+
; ===============================================================================================================================
265281
Func _NetWebView2_GetSource(ByRef $oWebV2M)
282+
Local Const $s_Prefix = "[_NetWebView2_GetSource]:"
266283
Local $oMyError = ObjEvent("AutoIt.Error", __NetWebView2_COMErrFunc) ; Local COM Error Handler
267284
#forceref $oMyError
268285

269286
Local $sSource = $oWebV2M.GetSource()
287+
If @error Then __NetWebView2_Log(@ScriptLineNumber, $s_Prefix, 1)
270288
Return SetError(@error, @extended, $sSource)
271289
EndFunc ;==>_NetWebView2_GetSource
272290

@@ -287,10 +305,10 @@ EndFunc ;==>_NetWebView2_GetSource
287305
; Example .......: No
288306
; ===============================================================================================================================
289307
Func _NetWebView2_NavigateToString(ByRef $oWebV2M, $s_HTML, $b_LoadWait = True)
308+
Local Const $s_Prefix = "[_NetWebView2_NavigateToString]:" & " HTML Size:" & StringLen($s_HTML) & " LoadWait:" & $b_LoadWait
290309
Local $oMyError = ObjEvent("AutoIt.Error", __NetWebView2_COMErrFunc) ; Local COM Error Handler
291310
#forceref $oMyError
292311

293-
Local Const $s_Prefix = "[_NetWebView2_PrintToPdfStream]:" & " HTML Size:" & StringLen($s_HTML) & " LoadWait:" & $b_LoadWait
294312
Local $iNavigation = $oWebV2M.NavigateToString($s_HTML)
295313
If @error Then Return SetError(@error, @extended, $iNavigation)
296314

@@ -302,24 +320,29 @@ EndFunc ;==>_NetWebView2_NavigateToString
302320
; #FUNCTION# ====================================================================================================================
303321
; Name ..........: _NetWebView2_ExportPageData
304322
; Description ...:
305-
; Syntax ........: _NetWebView2_ExportPageData(ByRef $oWebV2M, $sFormat, $sFilePath)
323+
; Syntax ........: _NetWebView2_ExportPageData(ByRef $oWebV2M, $iFormat[, $sFilePath = ''])
306324
; Parameters ....: $oWebV2M - [in/out] an object.
307-
; $sFormat - a string value.
308-
; $sFilePath - a string value.
309-
; Return values .: None
325+
; $iFormat - a string value. 0 HTML only, 1 MHTML Snapshot
326+
; $sFilePath - [optional] a string value. Default is '' which mean make Base64 as a result instead write to file
327+
; Return values .: Success - Depends on $sFilePath String with Base64 encoded binary content of the PDF or "SUCCESS: File saved to ...."
328+
; Failure - string with error description "ERROR: ........." and set @error to 1
310329
; Author ........: mLipok
311330
; Modified ......:
312331
; Remarks .......:
313332
; Related .......:
314333
; Link ..........:
315334
; Example .......: No
316335
; ===============================================================================================================================
317-
Func _NetWebView2_ExportPageData(ByRef $oWebV2M, $sFormat, $sFilePath)
336+
Func _NetWebView2_ExportPageData(ByRef $oWebV2M, $iFormat, $sFilePath = '')
337+
#TODO $sParameters - search for => "name": "captureSnapshot" ; https://github.com/ChromeDevTools/devtools-protocol/blob/master/json/browser_protocol.json
338+
#TODO https://github.com/ioa747/NetWebView2Lib/issues/15
339+
#TODO https://github.com/ioa747/NetWebView2Lib/pull/16
340+
341+
Local Const $s_Prefix = "[_NetWebView2_ExportPageData]:" & " Format:" & $iFormat & " FilePath:" & $sFilePath
318342
Local $oMyError = ObjEvent("AutoIt.Error", __NetWebView2_COMErrFunc) ; Local COM Error Handler
319343
#forceref $oMyError
320344

321-
Local Const $s_Prefix = "[_NetWebView2_PrintToPdfStream]:" & " Format:" & $sFormat & " FilePath:" & $sFilePath
322-
Local $s_Result = $oWebV2M.ExportPageData($sFormat, $sFilePath)
345+
Local $s_Result = $oWebV2M.ExportPageData($iFormat, $sFilePath)
323346
If StringInStr($s_Result, 'ERROR:') Then SetError(1)
324347
__NetWebView2_Log(@ScriptLineNumber, $s_Prefix & " RESULT:" & ((@error) ? ($s_Result) : ("SUCCESS")), 1)
325348
Return SetError(@error, @extended, $s_Result)
@@ -328,30 +351,78 @@ EndFunc ;==>_NetWebView2_ExportPageData
328351
; #FUNCTION# ====================================================================================================================
329352
; Name ..........: _NetWebView2_PrintToPdfStream
330353
; Description ...:
331-
; Syntax ........: _NetWebView2_PrintToPdfStream(ByRef $oWebV2M, $sFormat, $sFilePath)
354+
; Syntax ........: _NetWebView2_PrintToPdfStream(ByRef $oWebV2M)
332355
; Parameters ....: $oWebV2M - [in/out] an object.
333-
; $sFormat - a string value.
334-
; $sFilePath - a string value.
335-
; Return values .: None
356+
; Return values .: Success - String with Base64 encoded binary content of the PDF
357+
; Failure - string with error description "ERROR: ........." and set @error to 1
336358
; Author ........: mLipok
337359
; Modified ......:
338360
; Remarks .......:
339361
; Related .......:
340362
; Link ..........:
341363
; Example .......: No
342364
; ===============================================================================================================================
343-
Func _NetWebView2_PrintToPdfStream(ByRef $oWebV2M, $sFormat, $sFilePath)
365+
Func _NetWebView2_PrintToPdfStream(ByRef $oWebV2M)
366+
Local Const $s_Prefix = "[_NetWebView2_PrintToPdfStream]:"
344367
Local $oMyError = ObjEvent("AutoIt.Error", __NetWebView2_COMErrFunc) ; Local COM Error Handler
345368
#forceref $oMyError
346369

347-
Local Const $s_Prefix = "[_NetWebView2_PrintToPdfStream]:" & " Format:" & $sFormat & " FilePath:" & $sFilePath
348-
Local $s_Result = $oWebV2M.PrintToPdfStream($sFormat, $sFilePath)
370+
Local $s_Result = $oWebV2M.PrintToPdfStream()
349371
__NetWebView2_Log(@ScriptLineNumber, $s_Prefix, 1)
350372
If StringInStr($s_Result, 'ERROR:') Then SetError(1)
373+
351374
__NetWebView2_Log(@ScriptLineNumber, $s_Prefix & " RESULT:" & ((@error) ? ($s_Result) : ("SUCCESS")), 1)
352375
Return SetError(@error, @extended, $s_Result)
353376
EndFunc ;==>_NetWebView2_PrintToPdfStream
354377

378+
; #FUNCTION# ====================================================================================================================
379+
; Name ..........: _NetWebView2_DecodeB64
380+
; Description ...:
381+
; Syntax ........: _NetWebView2_DecodeB64(ByRef $oWebV2M, $sData)
382+
; Parameters ....: $oWebV2M - [in/out] an object.
383+
; $sData - a string value.
384+
; Return values .: None
385+
; Author ........: mLipok
386+
; Modified ......:
387+
; Remarks .......:
388+
; Related .......:
389+
; Link ..........:
390+
; Example .......: No
391+
; ===============================================================================================================================
392+
Func _NetWebView2_DecodeB64(ByRef $oWebV2M, $sData)
393+
Local Const $s_Prefix = "[_NetWebView2_DecodeB64]:"
394+
Local $oMyError = ObjEvent("AutoIt.Error", __NetWebView2_COMErrFunc) ; Local COM Error Handler
395+
#forceref $oMyError
396+
397+
Local $vResult = $oWebV2M.DecodeB64($sData)
398+
__NetWebView2_Log(@ScriptLineNumber, $s_Prefix, 1)
399+
Return SetError(@error, @extended, $vResult)
400+
EndFunc
401+
402+
; #FUNCTION# ====================================================================================================================
403+
; Name ..........: _NetWebView2_EncodeB64
404+
; Description ...:
405+
; Syntax ........: _NetWebView2_EncodeB64(ByRef $oWebV2M, $sData)
406+
; Parameters ....: $oWebV2M - [in/out] an object.
407+
; $sData - a string value.
408+
; Return values .: None
409+
; Author ........: mLipok
410+
; Modified ......:
411+
; Remarks .......:
412+
; Related .......:
413+
; Link ..........:
414+
; Example .......: No
415+
; ===============================================================================================================================
416+
Func _NetWebView2_EncodeB64(ByRef $oWebV2M, $sData)
417+
Local Const $s_Prefix = "[_NetWebView2_EncodeB64]:"
418+
Local $oMyError = ObjEvent("AutoIt.Error", __NetWebView2_COMErrFunc) ; Local COM Error Handler
419+
#forceref $oMyError
420+
421+
Local $vResult = $oWebV2M.EncodeB64($sData)
422+
__NetWebView2_Log(@ScriptLineNumber, $s_Prefix, 1)
423+
Return SetError(@error, @extended, $vResult)
424+
EndFunc
425+
355426
#EndRegion ; NetWebView2Lib UDF - core function
356427

357428
#Region ; NetWebView2Lib UDF - helper function
@@ -474,14 +545,15 @@ EndFunc ;==>__NetWebView2_COMErrFunc
474545
; Handles native WebView2 events
475546
#TODO => Func __NetWebView2_WebViewEvents__OnMessageReceived(ByRef $oWebV2M, $hGUI, $sMsg)
476547
Func __NetWebView2_WebViewEvents__OnMessageReceived($sMsg)
548+
Local Const $s_Prefix = "[WebViewEvents__OnMessageReceived]:"
477549
Local $oMyError = ObjEvent("AutoIt.Error", __NetWebView2_COMErrFunc) ; Local COM Error Handler
478550
#forceref $oMyError
551+
479552
Local $iSplitPos = StringInStr($sMsg, "|")
480553
Local $sCommand = $iSplitPos ? StringStripWS(StringLeft($sMsg, $iSplitPos - 1), 3) : $sMsg
481554
Local $sData = $iSplitPos ? StringTrimLeft($sMsg, $iSplitPos) : ""
482555
Local $aParts
483556

484-
Local Const $s_Prefix = "[WebViewEvents__OnMessageReceived]:" & $sCommand & ": "
485557
Switch $sCommand
486558
Case "INIT_READY"
487559
__NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $sData, 1)
@@ -525,10 +597,10 @@ EndFunc ;==>__NetWebView2_WebViewEvents__OnMessageReceived
525597
; Handles custom messages from JavaScript (window.chrome.webview.postMessage)
526598
#TODO => Func __NetWebView2_JSEvents__OnMessageReceived(ByRef $oWebV2M, ByRef $oWebJS, $hGUI, $sMsg)
527599
Func __NetWebView2_JSEvents__OnMessageReceived($sMsg)
600+
Local Const $s_Prefix = "[JSEvents__OnMessageReceived]:"
528601
Local $oMyError = ObjEvent("AutoIt.Error", __NetWebView2_COMErrFunc) ; Local COM Error Handler
529602
#forceref $oMyError
530603

531-
Local Const $s_Prefix = "[JSEvents__OnMessageReceived]:"
532604
__NetWebView2_Log(@ScriptLineNumber, $s_Prefix & " " & (StringLen($sMsg) > 150 ? StringLeft($sMsg, 150) & "..." : $sMsg), 1)
533605
Local $sFirstChar = StringLeft($sMsg, 1)
534606

@@ -637,4 +709,3 @@ Func __NetWebView2_WebViewEvents__OnContextMenu($sMenuData)
637709
__NetWebView2_Log(@ScriptLineNumber, $s_Prefix, 1)
638710
EndFunc ;==>__NetWebView2_WebViewEvents__OnContextMenu
639711
#EndRegion ; NetWebView2Lib UDF - === EVENT HANDLERS ===
640-

src/WebViewManager.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1129,7 +1129,7 @@ public string ExportPageData(int format, string filePath)
11291129
}
11301130
else if (format == 1) // MHTML Snapshot
11311131
{
1132-
var task = _webView.CoreWebView2.CallDevToolsProtocolMethodAsync("Page.captureSnapshot", "{}");
1132+
var task = _webView.CoreWebView2.CallDevToolsProtocolMethodAsync("Page.captureSnapshot", "{}");
11331133
string json = WaitAndGetResult(task);
11341134
if (!string.IsNullOrEmpty(json))
11351135
{
@@ -1601,4 +1601,5 @@ private string CleanJsString(string input)
16011601
}
16021602
#endregion
16031603
}
1604-
}
1604+
}
1605+

0 commit comments

Comments
 (0)