-
Posts
11,576 -
Joined
-
Last visited
-
Days Won
61
mLipok last won the day on September 13 2025
mLipok had the most liked content!
About mLipok

- Currently Viewing Topic: Help File/Documentation Issues. (Discussion Only)
- Birthday 07/19/1978
Profile Information
-
Member Title
I'm nitpicky sometimes.
-
Location
Europe, Poland, Upper Silesia, Zabrze
-
Interests
¯\_(ツ)_/¯
mLipok's Achievements
-
mLipok reacted to a post in a topic:
Another AutoIt extension for Visual Studio Code
-
mLipok reacted to a post in a topic:
Help File/Documentation Issues. (Discussion Only)
-
WebDriver UDF (W3C compliant version) - 2025/09/01
mLipok replied to Danp2's topic in AutoIt Example Scripts
Login to the page before you try to : _WD_Navigate($TempSession, 'https://order.mandarake.co.jp/order/detailPage/item?itemCode=1254832487') -
WebDriver UDF (W3C compliant version) - 2025/09/01
mLipok replied to Danp2's topic in AutoIt Example Scripts
Just modified your code a little to be runable (Au3Check support and driver update) and debug in full mode: ;~ https://www.autoitscript.com/forum/topic/208633-webdriver-udf-w3c-compliant-version-20250901/page/56/#findComment-1548510 #include "wd_capabilities.au3" #include "wd_core.au3" #include "wd_helper.au3" $_WD_DEBUG = $_WD_DEBUG_Full _Example() Func _Example() Local $TempWindowMode = '"--no-sandbox", ' & _ '"--disable-gpu", ' & _ '"--window-size=1920x1080", ' & _ '"--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36", ' & _ '"--allow-running-insecure-content"' ;~ $TempWindowMode &= ', "--headless"' _WD_Option('Driver', @ScriptDir & '\chromedriver.exe') _WD_Option('Port', 9515) DirCreate(@ScriptDir & '\Tmp') _WD_Option('DriverParams', '--port=9515 --verbose --log-path="' & @ScriptDir & '\Tmp\ChromeDriverLog.log"') Local $TempCapabilities = '{"capabilities": {"alwaysMatch": {"goog:chromeOptions": {"w3c": true, "args": [' & $TempWindowMode & ']}}}}' _WD_UpdateDriver('chrome', Default, False, True) _WD_Startup() Local $TempSession = _WD_CreateSession($TempCapabilities) If @error Then _WD_Shutdown() Exit ElseIf @error = $_WD_ERROR_Success Then _WD_Navigate($TempSession, 'https://order.mandarake.co.jp/order/detailPage/item?itemCode=1254832487') ;~ _WD_Navigate($TempSession, 'https://google.com') If @error Then _WD_DeleteSession($TempSession) _WD_Shutdown() Exit EndIf _WD_LoadWait($TempSession, 5000) EndIf MsgBox($MB_TOPMOST, "TEST #" & @ScriptLineNumber, 'END') _WD_DeleteSession($TempSession) _WD_Shutdown() Exit EndFunc ;==>_Example it works as it should works as using the given url: https://order.mandarake.co.jp/order/detailPage/item?itemCode=1254832487 in any other browser always end in the same way with the same message. I suppose that it is related to the fact that it requrires to login to the page at first and possibly do other related stuff specific to the page due to the security reason. As for me it is normal behavior of this website. -
WebDriver UDF (W3C compliant version) - 2025/09/01
mLipok replied to Danp2's topic in AutoIt Example Scripts
btw. did you try: user-agent= instead --user-agent= -
WebDriver UDF (W3C compliant version) - 2025/09/01
mLipok replied to Danp2's topic in AutoIt Example Scripts
Your JSON capabillities looks like: { "capabilities":{ "alwaysMatch": { "goog:chromeOptions": { "w3c": true, "args": [ "--no-sandbox", "--disable-gpu", "--window-size=1920x1080", "--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36", "--allow-running-insecure-content" ] } } } } I think you must to add: for example take a look for https://github.com/mlipok/Au3WebDriver-testing/blob/main/wd_testing_Example.au3 In this linked example you should see in SciTE console how capabilities look like . Compare them with yours. -
WebDriver UDF (W3C compliant version) - 2025/09/01
mLipok replied to Danp2's topic in AutoIt Example Scripts
Arguments not works this way Take a look here: https://github.com/mlipok/Au3WebDriver-testing/blob/main/wd_testing_helper.au3#L160-L209 -
I try to use _GUICtrlListView_InsertGroup() funcion. The help file and example are not clear to me - I just don't understand them (in this small part of course). According to helpfile: But in the examples it is not added "at the end of the ListView" So what kind of list it is ? I even tried to play with the example and change: _GUICtrlListView_InsertGroup($hListView, -1, 1, "Group 1") _GUICtrlListView_InsertGroup($hListView, -1, 2, "Group 2") to _GUICtrlListView_InsertGroup($hListView, 2, 1, "Group 1") _GUICtrlListView_InsertGroup($hListView, 3, 2, "Group 2") and nothing new happend - no change at all. What exactly $iIndex do?
-
SOLVE-SMART reacted to a post in a topic:
WebView2AutoIt - AutoIt WebView2 Component (COM Interop)
-
mLipok reacted to a post in a topic:
WebView2AutoIt - AutoIt WebView2 Component (COM Interop)
-
ioa747 reacted to a post in a topic:
WebView2AutoIt - AutoIt WebView2 Component (COM Interop)
-
@ioa747 could you be so nice and share yours CS code over github ?
-
argumentum reacted to a post in a topic:
WebView2AutoIt - AutoIt WebView2 Component (COM Interop)
-
ioa747 reacted to a post in a topic:
WebView2AutoIt - AutoIt WebView2 Component (COM Interop)
-
Nice thanks. Will look into it, hope in next 2 month. My january schedule is full as always from 20years.
-
mLipok reacted to a post in a topic:
WebView2AutoIt - AutoIt WebView2 Component (COM Interop)
-
mLipok reacted to a post in a topic:
Avoid "AutoIt Error" message box in unknown errors
-
mLipok reacted to a post in a topic:
Native win8+ toast notifications
-
WebDriver + AntiVirus = blocking the profile directory
mLipok replied to mLipok's topic in AutoIt General Help and Support
as so far none of this exclusions works as I expect them to work -
robertocm reacted to a post in a topic:
Debenu Quick PDF Library - UDF
-
mLipok reacted to a file:
AutoIt DLL Guide
-
argumentum reacted to a post in a topic:
Avoid "AutoIt Error" message box in unknown errors
-
argumentum reacted to a post in a topic:
Avoid "AutoIt Error" message box in unknown errors
-
Avoid "AutoIt Error" message box in unknown errors
mLipok replied to EKY32's topic in AutoIt General Help and Support
also: https://www.autoitscript.com/trac/autoit/ticket/4061 -
Avoid "AutoIt Error" message box in unknown errors
mLipok replied to EKY32's topic in AutoIt General Help and Support
https://www.autoitscript.com/trac/autoit/ticket/4060 -
Avoid "AutoIt Error" message box in unknown errors
mLipok replied to EKY32's topic in AutoIt General Help and Support
Here is my finall demo which works well with Au3Stripper and in both x32 and x64 AutoIt version . ;~ https://www.autoitscript.com/forum/topic/154081-avoid-autoit-error-message-box-in-unknown-errors/page/5/#findComment-1548058 #Region - AutoIt3Wrapper directives section ; General section ;~ #AutoIt3Wrapper_UseX64=N #AutoIt3Wrapper_UseX64=Y #AutoIt3Wrapper_Compile_both=Y #AutoIt3Wrapper_UseUpx=n #AutoIt3Wrapper_Compression=4 ; Au3Check section #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 6 -w 7 ; Au3Stripper section ;~ #AutoIt3Wrapper_Run_Au3Stripper=y ;~ #Au3Stripper_Parameters=/SO /PE #Au3Stripper_Parameters=/SO /PE /RM #AutoIt3Wrapper_Au3Stripper_OnError=f ;~ #Au3Stripper_Ignore_Funcs=Intercept_MessageBoxW ;~ #Au3Stripper_Ignore_Funcs=__AddHookApi_DllCallbackRegister_wrapper #EndRegion - AutoIt3Wrapper directives section #include <WinApi.au3> #Region - exmaple ;~ AddHookApi("user32.dll", "MessageBoxW", "Intercept_MessageBoxW", "int", "hwnd;wstr;wstr;uint") AddHookApi("user32.dll", "MessageBoxW", FuncName(Intercept_MessageBoxW), "int", "hwnd;wstr;wstr;uint") ;~ ConsoleWrite("! Below normal log " & @CRLF) MsgBox(0, 'Test', 'Some normal MsgBox text') ConsoleWrite("! Below log which should fire error" & @CRLF) Global $a[0] ConsoleWrite($a[1] & @CRLF) ; This is a deliberate action intended to display an error, as this script demonstrates how provide some kind of error handling - interact with MsgBox's title and text. #EndRegion - exmaple #Region @trancexx - https://www.autoitscript.com/forum/topic/154081-avoid-autoit-error-message-box-in-unknown-errors/#findComment-1111917 Func Intercept_MessageBoxW($hWnd, $sText, $sTitle, $iType) ___Log_AutoIt_Error_MsgBox(@ScriptLineNumber, "Intercept_MessageBoxW :: START") ___Log_AutoIt_Error_MsgBox(@ScriptLineNumber, $hWnd & " " & VarGetType($hWnd)) ___Log_AutoIt_Error_MsgBox(@ScriptLineNumber, 'TEXT=' & $sText) ___Log_AutoIt_Error_MsgBox(@ScriptLineNumber, 'TITLE=' & $sTitle) ___Log_AutoIt_Error_MsgBox(@ScriptLineNumber, $iType) If $sTitle = 'AutoIt' Or $sTitle = 'AutoIt Error' Then $sTitle = 'TESTING: ' & StringReplace($sTitle, "AutoIt", @ScriptName) Local $aCall = DllCall("user32.dll", "int", "MessageBoxW", _ "hwnd", $hWnd, _ "wstr", $sText, _ "wstr", $sTitle, _ "uint", $iType) If @error Or Not $aCall[0] Then Return 0 ___Log_AutoIt_Error_MsgBox(@ScriptLineNumber, "Intercept_MessageBoxW :: END") #REMARK - here you can do anything like write log, send email etc.... # ... of course before you script call the following return which will lead to exit AutoIt runtime Return $aCall[0] EndFunc ;==>Intercept_MessageBoxW ; The magic is down below Func AddHookApi($sModuleName, $vFunctionName, $vNewFunction, $sRet = "", $sParams = "") Local Static $pImportDirectory, $hInstance Local Const $IMAGE_DIRECTORY_ENTRY_IMPORT = 1 ___Log_AutoIt_Error_MsgBox(@ScriptLineNumber, "") If Not $pImportDirectory Then $hInstance = _WinAPI_GetModuleHandle(0) $pImportDirectory = ImageDirectoryEntryToData($hInstance, $IMAGE_DIRECTORY_ENTRY_IMPORT) If @error Then Return SetError(1, 0, 0) EndIf Local $iIsInt = IsInt($vFunctionName) Local $iRestore = Not IsString($vNewFunction) Local $tIMAGE_IMPORT_MODULE_DIRECTORY Local $pDirectoryOffset = $pImportDirectory Local $tModuleName Local $iInitialOffset, $iInitialOffset2 Local $iOffset2 Local $tBufferOffset2, $iBufferOffset2 Local $tBuffer, $tFunctionOffset, $pOld, $fMatch, $pModuleName, $pFuncName Local Const $PAGE_READWRITE = 0x04 While 1 $tIMAGE_IMPORT_MODULE_DIRECTORY = DllStructCreate("dword RVAOriginalFirstThunk;" & _ "dword TimeDateStamp;" & _ "dword ForwarderChain;" & _ "dword RVAModuleName;" & _ "dword RVAFirstThunk", _ $pDirectoryOffset) If Not DllStructGetData($tIMAGE_IMPORT_MODULE_DIRECTORY, "RVAFirstThunk") Then ExitLoop $pModuleName = $hInstance + DllStructGetData($tIMAGE_IMPORT_MODULE_DIRECTORY, "RVAModuleName") $tModuleName = DllStructCreate("char Name[" & _WinAPI_StringLenA($pModuleName) & "]", $pModuleName) If DllStructGetData($tModuleName, "Name") = $sModuleName Then ; function from this module $iInitialOffset = $hInstance + DllStructGetData($tIMAGE_IMPORT_MODULE_DIRECTORY, "RVAFirstThunk") $iInitialOffset2 = $hInstance + DllStructGetData($tIMAGE_IMPORT_MODULE_DIRECTORY, "RVAOriginalFirstThunk") If $iInitialOffset2 = $hInstance Then $iInitialOffset2 = $iInitialOffset $iOffset2 = 0 While 1 $tBufferOffset2 = DllStructCreate("dword_ptr", $iInitialOffset2 + $iOffset2) $iBufferOffset2 = DllStructGetData($tBufferOffset2, 1) If Not $iBufferOffset2 Then ExitLoop If $iIsInt Then If BitAND($iBufferOffset2, 0xFFFFFF) = $vFunctionName Then $fMatch = True ; wanted function Else $pFuncName = $hInstance + $iBufferOffset2 + 2 ; 2 is size od "word", see line below... $tBuffer = DllStructCreate("word Ordinal; char Name[" & _WinAPI_StringLenA($pFuncName) & "]", $hInstance + $iBufferOffset2) If DllStructGetData($tBuffer, "Name") == $vFunctionName Then $fMatch = True ; wanted function EndIf If $fMatch Then ___Log_AutoIt_Error_MsgBox(@ScriptLineNumber, DllStructGetData($tBuffer, "Name")) ___Log_AutoIt_Error_MsgBox(@ScriptLineNumber, "") $tFunctionOffset = DllStructCreate("ptr", $iInitialOffset + $iOffset2) ___Log_AutoIt_Error_MsgBox(@ScriptLineNumber, "") VirtualProtect(DllStructGetPtr($tFunctionOffset), DllStructGetSize($tFunctionOffset), $PAGE_READWRITE) ___Log_AutoIt_Error_MsgBox(@ScriptLineNumber, "") If @error Then Return SetError(3, 0, 0) $pOld = DllStructGetData($tFunctionOffset, 1) ___Log_AutoIt_Error_MsgBox(@ScriptLineNumber, "") If $iRestore Then DllStructSetData($tFunctionOffset, 1, $vNewFunction) ___Log_AutoIt_Error_MsgBox(@ScriptLineNumber, "") Else ___Log_AutoIt_Error_MsgBox(@ScriptLineNumber, "") #Region ; the #Au3Stripper_Off/#Au3Stripper_On directives, used in this place will lead to errors as /RM is used and all variables was changed in entire script but not within this region ;~ #Au3Stripper_Off ;~ DllStructSetData($tFunctionOffset, 1, DllCallbackGetPtr(DllCallbackRegister($vNewFunction, $sRet, $sParams))) ;~ #Au3Stripper_On #EndRegion ; the #Au3Stripper_Off/#Au3Stripper_On directives, used in this place will lead to errors as /RM is used and all variables was changed in entire script but not within this region ; for this reason __AddHookApi_DllCallbackRegister_wrapper() was added and enclosed within #Au3Stripper_Off >>> #Au3Stripper_On section __AddHookApi_DllCallbackRegister_wrapper($tFunctionOffset, $vNewFunction, $sRet, $sParams) EndIf ___Log_AutoIt_Error_MsgBox(@ScriptLineNumber, "") Return $pOld EndIf $iOffset2 += DllStructGetSize($tBufferOffset2) WEnd ExitLoop EndIf $pDirectoryOffset += 20 ; size of $tIMAGE_IMPORT_MODULE_DIRECTORY WEnd Return SetError(4, 0, 0) EndFunc ;==>AddHookApi #Au3Stripper_Off Func __AddHookApi_DllCallbackRegister_wrapper($tFunctionOffset__Wrapped, $vNewFunction__Wrapped, $sRet__Wrapped, $sParams__Wrapped) ___Log_AutoIt_Error_MsgBox(@ScriptLineNumber, "") Local $hHandle = DllCallbackRegister($vNewFunction__Wrapped, $sRet__Wrapped, $sParams__Wrapped) ___Log_AutoIt_Error_MsgBox(@ScriptLineNumber, "") Local $p = DllCallbackGetPtr($hHandle) ___Log_AutoIt_Error_MsgBox(@ScriptLineNumber, "") DllStructSetData($tFunctionOffset__Wrapped, 1, $p) ___Log_AutoIt_Error_MsgBox(@ScriptLineNumber, "") EndFunc ;==>__AddHookApi_DllCallbackRegister_wrapper #Au3Stripper_On Func VirtualProtect($pAddress, $iSize, $iProtection) ___Log_AutoIt_Error_MsgBox(@ScriptLineNumber, 'VirtualProtect START') ___Log_AutoIt_Error_MsgBox(@ScriptLineNumber, $pAddress) ___Log_AutoIt_Error_MsgBox(@ScriptLineNumber, $iSize) ___Log_AutoIt_Error_MsgBox(@ScriptLineNumber, $iProtection) Local $aCall = DllCall("kernel32.dll", "bool", "VirtualProtect", "ptr", $pAddress, "dword_ptr", $iSize, "dword", $iProtection, "dword*", 0) ___Log_AutoIt_Error_MsgBox(@ScriptLineNumber, $aCall[0]) If @error Or Not $aCall[0] Then Return SetError(1, 0, 0) ___Log_AutoIt_Error_MsgBox(@ScriptLineNumber, 'VirtualProtect END') Return 1 EndFunc ;==>VirtualProtect Func ImageDirectoryEntryToData($hInstance, $iDirectoryEntry) ; Get pointer to data Local $pPointer = $hInstance ; Start processing passed binary data. 'Reading' PE format follows. Local $tIMAGE_DOS_HEADER = DllStructCreate("char Magic[2];" & _ "word BytesOnLastPage;" & _ "word Pages;" & _ "word Relocations;" & _ "word SizeofHeader;" & _ "word MinimumExtra;" & _ "word MaximumExtra;" & _ "word SS;" & _ "word SP;" & _ "word Checksum;" & _ "word IP;" & _ "word CS;" & _ "word Relocation;" & _ "word Overlay;" & _ "char Reserved[8];" & _ "word OEMIdentifier;" & _ "word OEMInformation;" & _ "char Reserved2[20];" & _ "dword AddressOfNewExeHeader", _ $pPointer) ___Log_AutoIt_Error_MsgBox(@ScriptLineNumber, 'ImageDirectoryEntryToData') Local $sMagic = DllStructGetData($tIMAGE_DOS_HEADER, "Magic") ___Log_AutoIt_Error_MsgBox(@ScriptLineNumber, 'ImageDirectoryEntryToData') ; Check if it's valid format If Not ($sMagic == "MZ") Then Return SetError(1, 0, 0) ; MS-DOS header missing. Btw 'MZ' are the initials of Mark Zbikowski in case you didn't know. ; Move pointer $pPointer += DllStructGetData($tIMAGE_DOS_HEADER, "AddressOfNewExeHeader") ; move to PE file header ___Log_AutoIt_Error_MsgBox(@ScriptLineNumber, 'ImageDirectoryEntryToData') ; In place of IMAGE_NT_SIGNATURE structure Local $tIMAGE_NT_SIGNATURE = DllStructCreate("dword Signature", $pPointer) ___Log_AutoIt_Error_MsgBox(@ScriptLineNumber, 'ImageDirectoryEntryToData') ; Check signature If DllStructGetData($tIMAGE_NT_SIGNATURE, "Signature") <> 17744 Then ; IMAGE_NT_SIGNATURE ___Log_AutoIt_Error_MsgBox(@ScriptLineNumber, 'ImageDirectoryEntryToData') Return SetError(2, 0, 0) ; wrong signature. For PE image should be "PE\0\0" or 17744 dword. EndIf ; Move pointer $pPointer += 4 ; size of $tIMAGE_NT_SIGNATURE structure ; In place of IMAGE_FILE_HEADER structure ; Move pointer $pPointer += 20 ; size of $tIMAGE_FILE_HEADER structure ; Determine the type Local $tMagic = DllStructCreate("word Magic;", $pPointer) ___Log_AutoIt_Error_MsgBox(@ScriptLineNumber, 'ImageDirectoryEntryToData') Local $iMagic = DllStructGetData($tMagic, 1) ___Log_AutoIt_Error_MsgBox(@ScriptLineNumber, 'ImageDirectoryEntryToData') Local $tIMAGE_OPTIONAL_HEADER If $iMagic = 267 Then ; x86 version ; Move pointer $pPointer += 96 ; size of $tIMAGE_OPTIONAL_HEADER ElseIf $iMagic = 523 Then ; x64 version ; Move pointer $pPointer += 112 ; size of $tIMAGE_OPTIONAL_HEADER Else Return SetError(3, 0, 0) ; unsupported module type EndIf ; Validate input by checking available number of structures that are in the module Local Const $IMAGE_NUMBEROF_DIRECTORY_ENTRIES = 16 ; predefined value that PE modules always use (AutoIt certainly) If $iDirectoryEntry > $IMAGE_NUMBEROF_DIRECTORY_ENTRIES - 1 Then Return SetError(4, 0, 0) ; invalid input ; Calculate the offset to wanted entry (every entry is 8 bytes) $pPointer += 8 * $iDirectoryEntry ; At place of correst directory entry Local $tIMAGE_DIRECTORY_ENTRY = DllStructCreate("dword VirtualAddress; dword Size", $pPointer) ___Log_AutoIt_Error_MsgBox(@ScriptLineNumber, 'ImageDirectoryEntryToData') ; Collect data Local $pAddress = DllStructGetData($tIMAGE_DIRECTORY_ENTRY, "VirtualAddress") ___Log_AutoIt_Error_MsgBox(@ScriptLineNumber, 'ImageDirectoryEntryToData :' & $pAddress) If $pAddress = 0 Then Return SetError(5, 0, 0) ; invalid input ; $pAddress is RVA, add it to base address Return $hInstance + $pAddress EndFunc ;==>ImageDirectoryEntryToData #EndRegion @trancexx - https://www.autoitscript.com/forum/topic/154081-avoid-autoit-error-message-box-in-unknown-errors/#findComment-1111917 Func ___Log_AutoIt_Error_MsgBox($s_LineNumber, $s_Comment, $iError = @error, $iExtended = @extended) If @compiled Then Return SetError($iError, $iExtended, 0) ; do nothing just preserv @error and @extended Local $s_Sufix = $s_Comment & (($iError Or @extended) ? (" - ERR=" & $iError & ' - EXT=' & $iExtended) : ('')) ConsoleWrite('#' & $s_LineNumber & ' ::: ' & $s_Sufix & @CRLF) Return SetError($iError, $iExtended, 1) EndFunc ;==>___Log_AutoIt_Error_MsgBox -
Avoid "AutoIt Error" message box in unknown errors
mLipok replied to EKY32's topic in AutoIt General Help and Support
btw. DllStructCreate() example show error via MsgBox with "AutoIt" title other errors show error via MsgBox with "AutoIt Error" title. -
Avoid "AutoIt Error" message box in unknown errors
mLipok replied to EKY32's topic in AutoIt General Help and Support
So I see also related problem. Try the following repro #AutoIt3Wrapper_UseX64=y ;~ #AutoIt3Wrapper_UseX64=N _Test() Func _Test() Local $v = ' ' For $i = 1 To 100 $v &= $v If $i > 27 Then ConsoleWrite('STEP #' & $i & ' > ' & StringLen($v) & @CRLF) Next EndFunc ;==>_Test at x64 AutoIt in STEP #31 it produce freak results: Try to compare the x32 and x64 behavior. -
Avoid "AutoIt Error" message box in unknown errors
mLipok replied to EKY32's topic in AutoIt General Help and Support
So as I understand you According to the HelpFile: https://www.autoitscript.com/autoit3/docs/functions/DllStructCreate.htm there are two issues with DllStructCreate() function using this repro : #AutoIt3Wrapper_UseX64=y DllStructCreate("byte[123456789097123456789097123456789097123456789097123456789097123456789097123456789097123456789097123456789097123456789097123456789097123456789097123456789097123456789097123456789097123456789097123456789097123456789097123456789097123456789097123456789097123456789097123456789097123456789097]") ConsoleWrite('TESTING DllStructCreate() : ERR=' & @error & ' EXT=' & @extended & @CRLF) Exit Question 1: in x32 AutoIt version Why AutoIt fires MsgBox error and quit proceesing rest of the script, instead of simply setting @error = 3 (eventually @error = 4) ? Question 2: in x64 AutoIt version Why AutoIt does not set @error = 3 (eventually @error = 4) ?