Jump to content

Gianni

MVPs
  • Posts

    2,685
  • Joined

  • Last visited

  • Days Won

    39

Gianni last won the day on April 26

Gianni had the most liked content!

7 Followers

About Gianni

  • Birthday 05/02/1962

Profile Information

  • Location
    Italy

Recent Profile Visitors

5,348 profile views

Gianni's Achievements

  1. Hi @genius257, Very cool, I'm not familiar with this stuff, but it looks interesting. You've done a great job implementing it in AutoIt! I tried creating some simple test toasts in XML, but not all the tags work correctly at the moment (for example, the <image> tag doesn't display the image if the "src=" parameter is a URL...). Furthermore, it's mandatory to specify the activationType="background" parameter in the initial <toast...> tag... To generate my test toasts in XML, I installed this app (which also has ready-made templates): https://apps.microsoft.com/detail/9nblggh5xsl1 then, to insert the generated XML code into your example listing in AutoIt, I copy the generated code to the clipboard (select the listing and press Ctrl-C), and immediately run this little script (F5 in SciTE), which adapts it and puts it back in the clipboard. I then paste it into the AutoIt listing. Local $sVarName = "$sToast" Local $aStr = StringSplit(ClipGet(), @CRLF, 1) ; get the clipboard content Local $sListing ; = "Func " & $sFuntionName & "()" & @CRLF $sListing &= 'Local ' & $sVarName & ' = ""' & @CRLF For $i = 1 To $aStr[0] $sListing &= $sVarName & ' &= "' & StringReplace($aStr[$i], '"', '""') & '" ' & @CRLF Next ClipPut($sListing) ConsoleWrite($sListing) This is an example of output (which I later modified a bit) to insert into the example script. Local $sToast = "" $sToast &= "<toast activationType=""background"" launch=""action=viewAlarm&amp;alarmId=3"" scenario=""alarm"">" $sToast &= "" $sToast &= " <visual>" $sToast &= " <binding template=""ToastGeneric"">" $sToast &= " <text>Time to wake up!</text>" $sToast &= " <text>To prove you're awake, select which of the following fruits is yellow...</text>" $sToast &= ' <image placement="appLogoOverride" src="file://' & @TempDir & '\e21cd29c9fb51c3a5b82f009ec33fc997d2edd1ece931e8568f37e205c445778.jpeg" hint-crop="circle"/>' $sToast &= " </binding>" $sToast &= " </visual>" $sToast &= "" $sToast &= " <actions>" $sToast &= "" $sToast &= " <input id=""answer"" type=""selection"" defaultInput=""wrongDefault"">" $sToast &= " <selection id=""wrong"" content=""Orange""/>" $sToast &= " <selection id=""wrongDefault"" content=""Blueberry""/>" $sToast &= " <selection id=""right"" content=""Banana""/>" $sToast &= " <selection id=""wrong"" content=""Avacado""/>" $sToast &= " <selection id=""wrong"" content=""Cherry""/>" $sToast &= " </input>" $sToast &= "" $sToast &= " <action" $sToast &= " activationType=""system""" $sToast &= " arguments=""snooze""" $sToast &= " content=""""/>" $sToast &= "" $sToast &= " <action" $sToast &= " activationType=""background""" $sToast &= " arguments=""dismiss""" $sToast &= " content=""Dismiss""/>" $sToast &= "" $sToast &= " </actions>" $sToast &= ' <audio src=''ms-winsoundevent:Notification.Looping.Alarm'' loop=''false''/>' $sToast &= "</toast>" .. I hope you can implement support for events too... Bye and thanks! P.S. There was a notification "emulator" at this link:: Notifications UDF - Desktop notifications 1.2 (updated Mai 1st) - AutoIt Example Scripts - AutoIt Forums
  2. This is an UEZ's Example08 companion script If you're interested in generating animations (Example08) and want to use those animation strips found online (search for "animation strips" online) to create animated images, you can use this script to easily extract individual frames from the strip and save each in a separate file so you can import them using UEZ's Example08. In short: Save the image containing the sequence of frames to disk. Use this script to set and adjust (visually) the dimensions; the number of frames; the spacing between frames; and some other offsets. Once you've defined the frames, press the "save frames" button to generate as many files as there are frames. Now you can use UEZ's Example08 to animate the sequence. Example: 1) Suppose you found this image at the following link: 2) Save the image to disk. 3) Let's run this script and load that image from disk. 4) Set the parameters as follows: 5) We'll get this setting. 6) Now click "save frames" and the frames will be saved to disk. That's all. 7) Now you can use UEZ Example 8. This toy was sketched out to give an idea of the concept, but it could certainly be improved and perhaps merged with Example 8 to generate a single script... Have fun! #include <GDIPlus.au3> #include <GUIConstantsEx.au3> #include <WinAPI.au3> #include <WindowsConstants.au3> #include <File.au3> _GDIPlus_Startup() ; Choose Image File Local $sPath = FileOpenDialog("Choose Image File", @ScriptDir, "Images (*.gif;*.png;*.jpg;*.bmp)| All (*.*)") If $sPath = '' Then Exit MsgBox(16, "Error", "Sorry, no image was chosen") ; load background image Local $hBackground = _GDIPlus_ImageLoadFromFile($sPath) Local $iWidth = _GDIPlus_ImageGetWidth($hBackground) ; get image width Local $iHeight = _GDIPlus_ImageGetHeight($hBackground) ; get image Height ; Create GUI Local $hWnd = GUICreate("Movie maker", $iWidth, $iHeight, 50, 50) GUISetState(@SW_SHOW, $hWnd) Local $hDC = _WinAPI_GetDC($hWnd) Local $hGraphics = _GDIPlus_GraphicsCreateFromHDC($hDC) ; === CREATE OVERLAY === ; empty Bitmap ARGB Local $hOverlayBmp = _GDIPlus_BitmapCreateFromScan0($iWidth, $iHeight) Local $hOverlayCtx = _GDIPlus_ImageGetGraphicsContext($hOverlayBmp) Local $hBrushTransparent = _GDIPlus_BrushCreateSolid(0x00000000) ; Fills the entire bitmap with a semi-transparent color. Local $OverlayColor = 0xBE00FF00 _GDIPlus_GraphicsSetCompositingMode($hOverlayCtx, 1) ; (1) - Specifies that when a color is rendered, it overwrites the background color. ; Draw background _GDIPlus_GraphicsDrawImage($hGraphics, $hBackground, 0, 0) ; --- Create settings panel --- If $iWidth > @DesktopWidth - 500 Then Local $hGUIsettings = GUICreate("Strip settings", 270, 400, @DesktopWidth - 600, 50) Else Local $hGUIsettings = GUICreate("Strip settings", 270, 400, $iWidth + 70, 50) EndIf ; GUICtrlCreateLabel("Adgiust strip parameters here below", 20, 20, 270, 20) ; GUICtrlCreateLabel("Top margin:", 20, 60, 100, 20) Local $idTM = GUICtrlCreateInput(20, 150, 60, 100, 20) GUICtrlCreateUpdown($idTM) ; GUICtrlCreateLabel("Side margin:", 20, 90, 100, 20) Local $idSM = GUICtrlCreateInput(6, 150, 90, 100, 20) GUICtrlCreateUpdown($idSM) ; GUICtrlCreateLabel("Frame height:", 20, 120, 100, 20) Local $idFH = GUICtrlCreateInput(100, 150, 120, 100, 20) GUICtrlCreateUpdown($idFH) ; GUICtrlCreateLabel("Frame width:", 20, 150, 100, 20) Local $idFW = GUICtrlCreateInput(100, 150, 150, 100, 20) GUICtrlCreateUpdown($idFW) ; GUICtrlCreateLabel("number of frames:", 20, 180, 120, 20) Local $idFN = GUICtrlCreateInput(2, 150, 180, 100, 20) GUICtrlCreateUpdown($idFN) ; GUICtrlCreateLabel("Inter-frame gap:", 20, 210, 100, 20) Local $idIG = GUICtrlCreateInput(10, 150, 210, 100, 20) GUICtrlCreateUpdown($idIG) ; GUICtrlCreateLabel("number of rows:", 20, 240, 100, 20) Local $idRN = GUICtrlCreateInput(1, 150, 240, 100, 20) GUICtrlCreateUpdown($idRN) ; GUICtrlCreateLabel("Inter-row gap:", 20, 270, 100, 20) Local $idRG = GUICtrlCreateInput(10, 150, 270, 100, 20) GUICtrlCreateUpdown($idRG) ; GUICtrlCreateLabel("opacity of the mask:", 20, 300, 100, 20) Local $idMO = GUICtrlCreateInput(190, 150, 300, 100, 20) GUICtrlCreateUpdown($idMO) ; ; === Buttons === Local $btnOK = GUICtrlCreateButton("Save Frames", 20, 330, 110, 30) Local $btnRefresh = GUICtrlCreateButton("Refresh", 140, 330, 110, 30) GUISetState(@SW_SHOW, $hGUIsettings) ControlClick('', '', $btnRefresh) ; === MAIN LOOP === Local $sDrive = "", $sDir = "", $sFileName = "", $sExtension = "", $aPathSplit, $iFrame = 0, $hClone While True Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop Case $btnRefresh ContinueCase ; if any parameter changes, update the GUI accordingly Case $idTM, $idSM, $idFH, $idFW, $idFN, $idIG, $idMO, $idRN, $idRG $OverlayColor = Number("0x" & Hex(GUICtrlRead($idMO), 2) & "00FF00") ; add Background _GDIPlus_GraphicsDrawImage($hGraphics, $hBackground, 0, 0) ; add semitransparent layer _GDIPlus_GraphicsClear($hOverlayCtx, $OverlayColor) ; "Punches" some areas (opens holes in the semi-transparent layer). ; To do this, draw rectangles with alpha = 0. For $r = 0 To GUICtrlRead($idRN) - 1 For $f = 0 To GUICtrlRead($idFN) - 1 _GDIPlus_GraphicsFillRect($hOverlayCtx, GUICtrlRead($idSM) + ($f * (GUICtrlRead($idFW) + GUICtrlRead($idIG))), GUICtrlRead($idTM) + ($r * (GUICtrlRead($idFH) + GUICtrlRead($idRG))), GUICtrlRead($idFW), GUICtrlRead($idFH), $hBrushTransparent) Next Next ; place the created overlay (with "holes") on the GUI _GDIPlus_GraphicsDrawImage($hGraphics, $hOverlayBmp, 0, 0) Case $btnOK $aPathSplit = _PathSplit($sPath, $sDrive, $sDir, $sFileName, $sExtension) $iFrame = 0 For $r = 0 To GUICtrlRead($idRN) - 1 For $f = 0 To GUICtrlRead($idFN) - 1 $hClone = _GDIPlus_BitmapCloneArea($hBackground, GUICtrlRead($idSM) + ($f * (GUICtrlRead($idFW) + GUICtrlRead($idIG))), GUICtrlRead($idTM) + ($r * (GUICtrlRead($idFH) + GUICtrlRead($idRG))), GUICtrlRead($idFW), GUICtrlRead($idFH), $GDIP_PXF24RGB) ; Save bitmap to file _GDIPlus_ImageSaveToFile($hClone, $sFileName & "_frame_" & $iFrame & ".bmp") $iFrame += 1 Next Next ; Clean up resource _GDIPlus_ImageDispose($hClone) EndSwitch WEnd ; === CLEANUP === ; Fine disegno overlay _GDIPlus_BrushDispose($hBrushTransparent) _GDIPlus_GraphicsDispose($hOverlayCtx) _GDIPlus_BitmapDispose($hOverlayBmp) _GDIPlus_ImageDispose($hBackground) _GDIPlus_GraphicsDispose($hGraphics) _WinAPI_ReleaseDC($hWnd, $hDC) _GDIPlus_Shutdown() GUIDelete($hGUIsettings) GUIDelete($hWnd) Exit
  3. my two cents, You could use WinActive() + ControlSend() to send that key to a specific window only if that window is the active one, otherwise stick with the "global" HotKey functionality Global $HotKey = '{F5}' HotKeySet("{ESC}", "Terminate") HotKeySet($HotKey, "MyHotKey") ; Run Notepad for example Run("notepad.exe") ; Wait 10 seconds for the Notepad window to appear. Local $hWnd1 = WinWait("[CLASS:Notepad]", "", 10) While 1 Sleep(100) WEnd Func MyHotKey() ; Exception for HotKey ; Perform following action(s) only if the chosen window is the active window If WinActive($hWnd1) Then ; do this only if Notepad is the active window ; send HotKey to a specific window ControlSend($hWnd1,'','', $HotKey) Return EndIf ; otherwise do standard global action ConsoleWrite($HotKey & " was pessed (outside the notepad)" & @CRLF) EndFunc Func Terminate() ; Close the Notepad window using the handle returned by WinWait. WinClose($hWnd1) ; Now a screen will pop up and ask to save the changes, the classname of the window is called ; "#32770" and simulating the "TAB" key to move to the second button in which the "ENTER" is simulated to not "save the file" WinWaitActive("[CLASS:#32770]") Sleep(500) Send("{TAB}{ENTER}") Exit EndFunc ;==>Terminate
  4. Running it as is, I get the following error: "Couldn't find WorkerW under Progman." I then replaced your _WinAPI_FindWindowEx() function with asnippet from this piece of code from @argumentum, and it worked fine: Func __WinAPI_FindWindowEx() Local $hWorkerW = 0, $hProgman = _WinAPI_GetShellWindow() ; WinGetHandle("[CLASS:Progman]") ;~ _SendMessage($hProgman, 0x052C) ; <<<<<< force the creation of a WorkerW handle under Progman ; https://stackoverflow.com/questions/56132584/draw-on-windows-10-wallpaper-in-c ; https://stackoverflow.com/questions/34952967/drawing-to-the-desktop-via-injection ; https://github.com/rocksdanister/lively/issues/2074 ; _WinAPI_SendMessageTimeout($hProgman, 0x052C, 0, 0, 3000, $SMTO_NORMAL) ; same as _SendMessage() If Not $hWorkerW Then ; dah Local $aEnumWindows = _WinAPI_EnumWindows(False) For $n = 1 To UBound($aEnumWindows) - 1 If $aEnumWindows[$n][1] <> "WorkerW" Then ContinueLoop If _WinAPI_GetParent($aEnumWindows[$n][0]) = $hProgman Then $hWorkerW = $aEnumWindows[$n][0] ExitLoop ; but is likely one at the end of the Z-order EndIf Next EndIf ; ConsoleWrite("WorkerW = " & $hWorkerW & @CRLF) If Not $hWorkerW Then $hWorkerW = $hProgman Return $hWorkerW EndFunc ;==>__WinAPI_FindWindowEx By the way, very great effect! 👍
  5. ... Fun topic ... 🙂 just for fun, here are some tweaks to @argumentum's script above to simulate dragging the window and see the visual effect of the movement under the icons...nice effect. To make the window follow the mouse, press F9 once; to stop the movement, press F9 again. #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Version=Beta #AutoIt3Wrapper_UseX64=y #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #include <WinAPI.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <Array.au3> #include <WinAPISysWin.au3> Opt("MustDeclareVars", True) HotKeySet("{ESC}", Terminate) ;;; https://www.autoitscript.com/forum/topic/212981-move-window-behind-desktop-icons/page/2/#findComment-1544435 HotKeySet('{F9}', F9) ; <-- Global $bFlag = False ; <-- Example() Func Example() Local $hWorkerW = 0, $hProgman = _WinAPI_GetShellWindow() ; WinGetHandle("[CLASS:Progman]") ;~ _SendMessage($hProgman, 0x052C) ; <<<<<< force the creation of a WorkerW handle under Progman ; https://stackoverflow.com/questions/56132584/draw-on-windows-10-wallpaper-in-c ; https://stackoverflow.com/questions/34952967/drawing-to-the-desktop-via-injection ; https://github.com/rocksdanister/lively/issues/2074 _WinAPI_SendMessageTimeout($hProgman, 0x052C, 0, 0, 3000, $SMTO_NORMAL) ; same as _SendMessage() If Not $hWorkerW Then ; dah Local $aEnumWindows = _WinAPI_EnumWindows(False) For $n = 1 To UBound($aEnumWindows) - 1 If $aEnumWindows[$n][1] <> "WorkerW" Then ContinueLoop If _WinAPI_GetParent($aEnumWindows[$n][0]) = $hProgman Then $hWorkerW = $aEnumWindows[$n][0] ExitLoop ; but is likely one at the end of the Z-order EndIf Next EndIf ConsoleWrite("WorkerW = " & $hWorkerW & @CRLF) If Not $hWorkerW Then $hWorkerW = $hProgman Local $hGUI = GUICreate("Overlay", 400, 300, 10, 10) ; , $WS_POPUP, $WS_EX_TOOLWINDOW) GUICtrlCreatePic(StringLeft(@AutoItExe, StringInStr(@AutoItExe, "\", 0, -1)) & "Examples\GUI\msoobe.jpg", 0, 0, 400, 300) _WinAPI_SetParent($hGUI, $hWorkerW) _WinAPI_SetWindowLong($hGUI, $GWL_EXSTYLE, BitOR(_WinAPI_GetWindowLong($hGUI, $GWL_EXSTYLE), $WS_EX_LAYERED)) _WinAPI_SetLayeredWindowAttributes($hGUI, 0, 180) GUISetState(@SW_SHOWNOACTIVATE) While GUIGetMsg() <> $GUI_EVENT_CLOSE If $bFlag Then WinMove($hGUI,'',MouseGetPos(0),MouseGetPos(1)) EndIf WEnd EndFunc ;==>Example Func Terminate() Exit EndFunc ;==>Terminate Func F9() $bFlag = Not $bFlag EndFunc
  6. Hi @MattyD ... I didn't install it, and "WindowTest.au3" works anyway ... ... I also tried this stuff but it doesn't work ... I get this --> !>01:19:22 AutoIt3.exe ended.rc:-1073741819 Thanks for all this work! 👍
  7. Thanks @MattyD for the new "XamlLibs" I've been trying to create a WebView using what you said in your previous post, but I'm also getting the error -2147467259 Unspecified Error (E_FAIL) right after this line of code: Local $pControl = IWebViewFactory4_CreateInstanceWithExecutionMode($pCtrl_Fact, $mWebViewExecutionMode["SameThread"]) Since I'm in the dark on this, ... I can only stay tuned ... 🙂
  8. #include "Include\Classes\Windows.UI.Xaml.Controls.Webview.au3" I can't find this file to try
  9. Well said! I agree with you... ColorPicker works well (manifest patch needed) and callback function works great! P.S. peeking at ClassExplorer I see that there is a "Windows.UI.Xaml.Controls.IWebView2" what is this for? can you embed a browser with this?!?
  10. I applied the patch to the compiled executable file instead of AutoIt3.exe and that worked. Thanks
  11. Hi @MattyD I replaced the original autoit3.exe file with the modified version generated by your script (..?! you know things that I obviously don't know) and in this way MediaPlayer.au3 works. Then I tried to compile MediaPlayer.au3 but the generated executable does not work (the autoit3.exe file after compilation is still the modified one). Is there any trick to be able to compile MediaPlayer.au3 into a working executable and then restore the original autoit3.exe file in the AutoIt folder? Bye and thanks
  12. A first attempt at interaction between AutoIt and OrdoWebView2 it seems to me that some small anomalies occur (but maybe it's me who doesn't use them correctly), such as: the value of an AutoIt variable set by reading the value of a property of a browser object is not immediately available in AutoIt, but delays must be inserted before reading its value. However, I have set 3 callback functions related to the following events: "navigation completed"; "zoom change" and "asynchronous JS result". In particular, this last event should be executed only if you use the execution of a javascript script using the RunJsAsync() method. well, although I have not used that method in the AutoIt script but have only used the RunJs() method, I see that the JSAsyncResult callback function is occasionally executed anyway (?). Well, this test script uses a web page that contains a "label" where the text changes to "I'm not a robot" only when the three red cubes have been clicked. (You could use this as a sort of graphical "CAPTCHA"). You can rotate the cube by dragging with the mouse so that any red cubes that are "on the back" come to the forefront so that you can click them. The interaction with AutoIt consists of reading the value of that JS field to check when it changes to "I'm not a robot" and acting accordingly in AutoIt. It seems to work, but I think I still need to dig deeper into this functionality. The zoom change event is executed when the browser zoom is changed. To change the zoom you can hold down the "ctrl" key on the keyboard and simultaneously rotate the mouse wheel up or down. To reset the zoom to 100% press "ctrl" and zero on the numpad. Here is the "experiment". #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include "OrdoWebView2.au3" Global $bReloaded = False ; to be used in NavigationCompleted callback function _TestOrdoWebView() Func _TestOrdoWebView() Local $hMain_GUI = GUICreate("Main GUI", 500, 520, -1, -1, BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS, $WS_CLIPCHILDREN)) Local $hButton1 = GUICtrlCreateButton("I give up", 10, 495, 480, 20) GUISetState(@SW_SHOW, $hMain_GUI) Local $aEBWebView1 = webview2_GUI_Create(480, 480, 10, 10, $hMain_GUI, "_OrdoWebView_") ; 6° parameter: Events Callback funcion name prefix ; a javascript function to be injected in Document for a later use from AutoIt via .RunJs or .RunJsAsync $aEBWebView1[0].AddScriptToExecuteOnDocumentCreated("function getQSValue(qsExpr){return document.getElementById((qsExpr)).innerHTML}") ; Load web page $aEBWebView1[0].Navigate("https://shzlw.github.io/design/I-am-not-a-robot.html") While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop Case $hButton1 MsgBox(0, 'AutoIt', "Test failed. Goodbye") ExitLoop EndSwitch If $aEBWebView1[0].RunJs("getQSValue", "label") = "I'm not a robot" Then MsgBox(0, 'AutoIt', "Great! You are not a robot. Welcome human!") $aEBWebView1[0].Reload Do ConsoleWrite('.') Until $bReloaded $bReloaded = False ; if there is not this MsgBox to produce a long delay sometimes the reload is executed twice MsgBox(0, 'AutoIt', "Play again") EndIf WEnd _SysFreeString($pProgID) GUIDelete($aEBWebView1[1]) GUIDelete($hMain_GUI) EndFunc ;==>_TestOrdoWebView ; --- CallBack functions --- Volatile Func _OrdoWebView_NavigationCompleted($IsSuccess, $WebErrorStatus) ConsoleWrite("_OrdoWebView_NavigationCompleted" & @CRLF) $bReloaded = True EndFunc ;==>_OrdoWebView_NavigationCompleted Volatile Func _OrdoWebView_ZoomChanged($iValue) ConsoleWrite("New Zoom Value is : " & $iValue & @CRLF) TrayTip("Zoom changed", "New zoom value is: " & $iValue, 3, 17) EndFunc ;==>_OrdoWebView_ZoomChanged Volatile Func _OrdoWebView_JSAsyncResult($vResult, $vToken, $sErrString) ConsoleWrite("Javascript result: " & $vResult & @CRLF & $vToken & @CRLF & $sErrString & @CRLF) EndFunc ;==>_OrdoWebView_JSAsyncResult
  13. Indeed, no need to register anything other than OrdoWebView2.ocx You just need a folder containing the files as shown in the figure below \MYFOLDER | OrdoWebView2.ocx | OrdoWebView2.au3 | OrdoWebView2_Demo.au3 | \---OrdoRC6 cairo_sqlite.dll DirectCOM.dll RC6.dll RC6Widgets.dll RegisterRC6inPlace.vbs RegisterRC6WidgetsInPlace.vbs WebView2Loader.dll _Library-Licenses.txt _Version-History.txt (You can find the necessary files in the 7z file in @Danyfirex's post as indicated in first post above) As @Ninedid, I also did the following: created a folder containing necessary files as above opened a DOS prompt with administrative rights; placed the current directory where the OrdoWebView2.ocx file is located I typed the following command: regsvr32 .\OrdoWebView2.ocx I received the popup message with the message "DllRegisterServer in .\OrdoWebView2.ocx succeeded" That's it, then running the OrdoWebView2_Demo.au3 file everything worked fine thanks all for the feedbacks
  14. You can start the OrdoWebView2 control in "incognito" mode by setting the .IsPrivateNavigation parameter to True in the InitEx method, as described in the OrdoWebView2.ocx control help (https://freeware.ordoconcept.net/Help/OrdoWebView2/topics/InitEx.htm). This way the user data folder should be automatically and silently created in a temporary location and is not stored permanently, but only exists during the session and is deleted when it ends. P.S. In order not to hijack this topic too much, I created a new Topic specifically related to the OrdoWebView2.ocx control
×
×
  • Create New...