Leaderboard
Popular Content
Showing content with the highest reputation on 01/06/2019 in all areas
-
_ArrayFromString()
iamtheky reacted to argumentum for a topic
Edit: This is now part of beta 3.3.15.4 __________________________________________________________________________________________________ There is a _ArrayToString() but no _ArrayFromString(). ( searched in the forum and google ) The example is based on the _ArrayToString() help file, to show the reconstruction of the array. #include <Array.au3> #include <MsgBoxConstants.au3> Local $aArray[20] For $i = 0 To 19 $aArray[$i] = $i Next _ArrayDisplay($aArray, "1D Array") MsgBox($MB_SYSTEMMODAL, "Items 1-7", _ArrayToString($aArray, @TAB, 1, 7)) ConsoleWrite('>' & _ArrayToString($aArray, @TAB, 1, 7) & '<' & @CRLF) _ArrayDisplay(_ArrayFromString(_ArrayToString($aArray, @TAB, 1, 7), @TAB), "1D ArrayFromString") Local $aArray[10][10] For $i = 0 To 9 For $j = 0 To 9 $aArray[$i][$j] = $i & "-" & $j Next Next _ArrayDisplay($aArray, "2D Array") MsgBox($MB_SYSTEMMODAL, "Rows 4-7, cols 2-5", _ArrayToString($aArray, " :: ", 4, 7, @CRLF, 2, 5)) ConsoleWrite('>' & _ArrayToString($aArray, " :: ", 4, 7, @CRLF, 2, 5) & '<' & @CRLF) _ArrayDisplay(_ArrayFromString(_ArrayToString($aArray, " :: ", 4, 7, @CRLF, 2, 5), " :: ", @CRLF), "2D ArrayFromString") ; au3.user.calltips.api: ; _ArrayFromString($sString , [$sDelim_Col = "|" [, $sDelim_Row = @CRLF [, $iForce2D = 0]]]) Rebuild an array from _ArrayToString() ; #FUNCTION# ==================================================================================================================== ; Name ..........: _ArrayFromString ; Description ...: Reconstruct an array from _ArrayToString() or _SQLite_Display2DResult()** ; Syntax ........: _ArrayFromString($sArrayStr[, $sDelim_Col = "|", [$sDelim_Row = @CRLF, [$bForce2D = False]]]) ; Parameters ....: $sArrayStr : A string formated by _ArrayToString() or _SQLite_Display2DResult()** ; $sDelim_Col : [optional] default is "|" ; $sDelim_Row : [optional] default is @CRLF ; $bForce2D : [optional] default is False. True will force a 2 dimensional array even if 1 dimensional. ; Return values .: Success - An array ; Failure - Return 0 with error = 1 ; Link...........: https://www.autoitscript.com/forum/topic/197277-_arrayfromstring/ ; Author ........: argumentum ; Remarks .......: ** for _SQLite_Display2DResult(), $sDelim_Col must be declared. ; =============================================================================================================================== Func _ArrayFromString($sArrayStr, $sDelim_Col = "|", $sDelim_Row = @CRLF, $bForce2D = False) If $sDelim_Col = Default Then $sDelim_Col = "|" If $sDelim_Row = Default Then $sDelim_Row = @CRLF If $bForce2D = Default Then $bForce2D = False Local $aRow, $aCol = StringSplit($sArrayStr, $sDelim_Row, 3) $aRow = StringSplit($aCol[0], $sDelim_Col, 3) If UBound($aCol) = 1 And Not $bForce2D Then For $m = 0 To UBound($aRow) - 1 $aRow[$m] = StringStripWS($aRow[$m], 3) If $aRow[$m] == Int($aRow[$m]) Then $aRow[$m] = Int($aRow[$m]) Next Return $aRow EndIf Local $aRet[UBound($aCol)][UBound($aRow)] For $n = 0 To UBound($aCol) - 1 $aRow = StringSplit($aCol[$n], $sDelim_Col, 3) If UBound($aRow) > UBound($aRet, 2) Then Return SetError(1) For $m = 0 To UBound($aRow) - 1 $aRow[$m] = StringStripWS($aRow[$m], 3) If $aRow[$m] == Int($aRow[$m]) Then $aRow[$m] = Int($aRow[$m]) $aRet[$n][$m] = $aRow[$m] Next Next Return $aRet EndFunc ;==>_ArrayFromString PS: so, how to save an array to an ini file ? ( small array, the limitations of an ini file still applies ) #include <Array.au3>; For _ArrayDisplay() ; if you declare it, it will use it, else, use default ;Global $g_iniFile = @ScriptDir & "\ThisTest.ini" Example() Func Example() Local $n, $aTest, $aArray[3] = ["00", "one", "2"] ; if is not in the INI file, it will save it $aTest = IniGet("Test", $aArray) _ArrayDisplay($aTest, "1st") ; since is saved, it'll recall it $aTest = IniGet("Test") For $n = 0 To UBound($aTest) - 1 ; ..just to show the elements found as integer If IsInt($aTest[$n]) Then $aTest[$n] &= " = IsInt() = " & (IsInt($aTest[$n]) = 1) Next _ArrayDisplay($aTest, "2nd") EndFunc ;==>Example Func IniGet($sKey, $vDefault = Default, $sSection = "Settings") Local Static $ini = IsDeclared("g_iniFile") ? Eval("g_iniFile") : StringTrimRight(@ScriptFullPath, 4) & ".ini" Local $v, $s = IniRead($ini, $sSection, $sKey, Chr(1)) If $s = Chr(1) Then If $vDefault == Default Then Return SetError(1, 0, "") Else IniSet($sKey, $vDefault, $sSection) Return $vDefault EndIf EndIf $v = StringLeft($s, 1) Switch $v Case "i" Return Int(StringTrimLeft($s, 2)) Case "a" Return _ArrayFromString(BinaryToString(StringTrimLeft($s, 2)), Chr(1), Chr(2)) Case "d" Return Binary(StringTrimLeft($s, 2)) Case Else Return String(StringTrimLeft($s, 2)) EndSwitch EndFunc ;==>IniGet Func IniSet($sKey, $vValue, $sSection = "Settings") Local Static $ini = IsDeclared("g_iniFile") ? Eval("g_iniFile") : StringTrimRight(@ScriptFullPath, 4) & ".ini" If IsInt($vValue) Then $vValue = "i:" & $vValue ElseIf IsArray($vValue) Then $vValue = "a:" & StringToBinary(_ArrayToString($vValue, Chr(1), -1, -1, Chr(2))) ElseIf IsBinary($vValue) Then $vValue = "d:" & $vValue Else $vValue = "s:" & $vValue EndIf $vValue = IniWrite($ini, $sSection, $sKey, $vValue) Return SetError(@error, @extended, $vValue) EndFunc ;==>IniSet ; au3.user.calltips.api: ; _ArrayFromString($sString , [$sDelim_Col = "|" [, $sDelim_Row = @CRLF [, $iForce2D = 0]]]) Rebuild an array from _ArrayToString() ; #FUNCTION# ==================================================================================================================== ; Name ..........: _ArrayFromString ; Description ...: Reconstruct an array from _ArrayToString() or _SQLite_Display2DResult()** ; Syntax ........: _ArrayFromString($sArrayStr[, $sDelim_Col = "|", [$sDelim_Row = @CRLF, [$bForce2D = False]]]) ; Parameters ....: $sArrayStr : A string formated by _ArrayToString() or _SQLite_Display2DResult()** ; $sDelim_Col : [optional] default is "|" ; $sDelim_Row : [optional] default is @CRLF ; $bForce2D : [optional] default is False. True will force a 2 dimensional array even if 1 dimensional. ; Return values .: Success - An array ; Failure - Return 0 with error = 1 ; Link...........: https://www.autoitscript.com/forum/topic/197277-_arrayfromstring/ ; Author ........: argumentum ; Remarks .......: ** for _SQLite_Display2DResult(), $sDelim_Col must be declared. ; =============================================================================================================================== Func _ArrayFromString($sArrayStr, $sDelim_Col = "|", $sDelim_Row = @CRLF, $bForce2D = False) If $sDelim_Col = Default Then $sDelim_Col = "|" If $sDelim_Row = Default Then $sDelim_Row = @CRLF If $bForce2D = Default Then $bForce2D = False Local $aRow, $aCol = StringSplit($sArrayStr, $sDelim_Row, 3) $aRow = StringSplit($aCol[0], $sDelim_Col, 3) If UBound($aCol) = 1 And Not $bForce2D Then For $m = 0 To UBound($aRow) - 1 $aRow[$m] = StringStripWS($aRow[$m], 3) If $aRow[$m] == Int($aRow[$m]) Then $aRow[$m] = Int($aRow[$m]) Next Return $aRow EndIf Local $aRet[UBound($aCol)][UBound($aRow)] For $n = 0 To UBound($aCol) - 1 $aRow = StringSplit($aCol[$n], $sDelim_Col, 3) If UBound($aRow) > UBound($aRet, 2) Then Return SetError(1) For $m = 0 To UBound($aRow) - 1 $aRow[$m] = StringStripWS($aRow[$m], 3) If $aRow[$m] == Int($aRow[$m]) Then $aRow[$m] = Int($aRow[$m]) $aRet[$n][$m] = $aRow[$m] Next Next Return $aRet EndFunc ;==>_ArrayFromString PS2: https://www.autoitscript.com/trac/autoit/ticket/3696#ticket <-- completed.1 point -
Try this: #include <GDIPlus.au3> #include <GUIConstantsEx.au3> #include <GuiTreeView.au3> #include <Staticconstants.au3> #include <WinAPI.au3> #include <WinAPIEx.au3> #include <WinAPIHObj.au3> #include <WindowsConstants.au3> ;---------------------------------------------------------------------------------------------------------------------- _GDIPlus_Startup() Global $Icon = _GDIPlus_BitmapCreateFromMemory(Exit24X24png()) Global $hIcon_16x16 = _GDIPlus_ImageResize($Icon, 16, 16) Global $hIcon_16x16_GDI = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hIcon_16x16) Global $hImage = _GUIImageList_Create(16, 16, 5, 3) _GUIImageList_Add($hImage, $hIcon_16x16_GDI) GUICreate("TreeView Set Icon", 400, 300) Global $idTreeView = GUICtrlCreateTreeView(2, 2, 396, 268, BitOR($TVS_EDITLABELS, $TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS, $TVS_CHECKBOXES)) Global $TVRoot = GUICtrlCreateTreeViewItem("Internet", $idTreeView) GUICtrlCreateTreeViewItem("Item 1", $TVRoot) GUICtrlCreateTreeViewItem("Item 2", $TVRoot) GUICtrlSetState($TVRoot, BitOR($GUI_EXPAND, $GUI_DEFBUTTON)) _GUICtrlTreeView_SetNormalImageList($idTreeView, $hImage) GUISetState(@SW_SHOW) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE GUIDelete() _GDIPlus_ImageDispose($Icon) _GDIPlus_ImageDispose($hIcon_16x16) _WinAPI_DeleteObject($hIcon_16x16_GDI) _GDIPlus_Shutdown() Func WinAPI_Base64Decode($sB64String);UEZ Local $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "ptr", 0, "dword*", 0, "ptr", 0, "ptr", 0) If @error Or Not $aCrypt[0] Then Return SetError(1, 0, "") Local $bBuffer = DllStructCreate("byte[" & $aCrypt[5] & "]") $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "struct*", $bBuffer, "dword*", $aCrypt[5], "ptr", 0, "ptr", 0) If @error Or Not $aCrypt[0] Then Return SetError(2, 0, "") Return DllStructGetData($bBuffer, 1) EndFunc ;==>WinAPI_Base64Decode Func _WinAPI_LZNTDecompress(ByRef $tInput, ByRef $tOutput, $iBufferSize = 0x800000);UEZ Local $tBuffer, $Ret $tOutput = 0 $tBuffer = DllStructCreate('byte[' & $iBufferSize & ']') If @error Then Return SetError(1, 0, 0) $Ret = DllCall('ntdll.dll', 'uint', 'RtlDecompressBuffer', 'ushort', 0x0002, 'ptr', DllStructGetPtr($tBuffer), 'ulong', $iBufferSize, 'ptr', DllStructGetPtr($tInput), 'ulong', DllStructGetSize($tInput), 'ulong*', 0) If @error Then Return SetError(2, 0, 0) If $Ret[0] Then Return SetError(3, $Ret[0], 0) $tOutput = DllStructCreate('byte[' & $Ret[6] & ']') If Not _WinAPI_MoveMemory(DllStructGetPtr($tOutput), DllStructGetPtr($tBuffer), $Ret[6]) Then $tOutput = 0 Return SetError(4, 0, 0) EndIf Return $Ret[6] EndFunc ;==>_WinAPI_LZNTDecompress Func Exit24X24png() Local $ExitPNG24X24png = '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' $ExitPNG24X24png &= '/zlbuDOlxaWFn06dWf/e6dPVjxqZd4r2p+eeswZ7utLpzs60Hk8kha6bALLRqNfz+UJhdTX79vxC4fMvv+z8P0P/A5IyTXF4aEjtaG5WLV1XvCAAKYPlbDb47fS0H9yRjv8m/wZF7Zsuu2STYgAAAABJRU5ErkJggg==' Return Binary(WinAPI_Base64Decode($ExitPNG24X24png)) EndFunc ;==>Exit24X24png1 point
-
_ArrayFromString()
argumentum reacted to iamtheky for a topic
They do have a difference, in that yours builds the array based off input rather than trying to cram the input into the existing dimensions. There are cases where this would be desirable behavior and clean up a lot of prep work.1 point -
_ArrayFromString()
argumentum reacted to iamtheky for a topic
certainly different from stringsplit with the second delimiter, it's more akin to passing a string to _ArrayAdd.1 point -
Hi borsTiHD, here and example of embbeded font with UEZ script. #include-once #include <GUIConstantsEx.au3> #include <SendMessage.au3> #include <StaticConstants.au3> #include <WinAPI.au3> #include <WinAPIGdi.au3> #include <WindowsConstants.au3> ;---------------------------------------------------------------------------------------------------------------------- Opt('GUICloseOnESC', 0) Opt("GUIOnEventMode", 1) Global $WWidth = @DesktopWidth - 200, $WHeight = @DesktopHeight - 200;- Main Window size ------------------------------ Global $BOK Global $bGUICtrlClockFont = AstronautIII() ;------------------------ font name: Astronaut III -------------------------- Global $tGUICtrlClockFont = DllStructCreate('byte[' & BinaryLen($bGUICtrlClockFont) & ']') DllStructSetData($tGUICtrlClockFont, 1, $bGUICtrlClockFont) Global $hGUICtrlClockFont = _WinAPI_AddFontMemResourceEx(DllStructGetPtr($tGUICtrlClockFont), DllStructGetSize($tGUICtrlClockFont)) ;*********************************************************** Main Window ********************************************** GUICreate("Digital Font from Memory", $WWidth, $WHeight) GUICtrlCreateLabel("The numbers are: 0 1 2 3 4 5 6 7 8 9 10 11 12", 10, 10, 1000, 200) GUICtrlSetFont(-1, 24, 400, 0, 'Astronaut III') GUICtrlSetColor(-1, 0x66AAFF) GUISetOnEvent($GUI_EVENT_CLOSE, "EventsCtrl") GUISetState() ;*********************************************************** Main Window ********************************************** While 1 WEnd Func EventsCtrl() Local $Msg = @GUI_CtrlId Switch $Msg Case $GUI_EVENT_CLOSE ;------------------------------ Main GUI cose ------------------------------------------- GUIDelete() _WinAPI_RemoveFontMemResourceEx($hGUICtrlClockFont) Exit EndSwitch EndFunc ;==>EventsCtrl ;----------------------------------------------------------- Font embeded --------------------------------------------- ;Code below was generated by: 'File to Base64 String' Code Generator v1.20 Build 2015-01-20 Func AstronautIII() Local $Base64String = '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' $Base64String &= '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' $Base64String &= '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' $Base64String &= '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' $Base64String &= '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' $Base64String &= 'Xg4hL/5YXn5e/qghL15+XsxezF5eLyEO7F7MXsxezF4BWl4AABEASgAAAfICFgAGAAoADgASABYAGgAeACUAKQAtADEAOAA8AEAARABIAEwAAAEjNTMyFh0BIzUzJyM1MxMjNTMlIzUzASM1MyUjNTMBFAYrATUzJSM1MxUjNTMXIzUzByMiJj0BMzcjNTMVIzUzFSM1MxUjNTMRIzUzAfJeDiEvXl5uXl5uXl7+tl5eAUpeXv62Xl4BSi8hDl7+tl5eXl7cXl7cDiEvXm5eXl5eXl5eXl5eAbheLyF8XhBe/sZefl7+WF5+Xv6oIS9efl7MXsxeXi8hDuxezF7MXsxeAVpeAAAQAEoAAAHyAhYAAwAHAA4AEgAWABoAHgAiACYAKgAxADUAOQA9AEEARQAAASM1MwcjNTMHIzU0NjsBASM1MyUjNTMXIzUzByM1MwEjNTMlIzUzFyM1MwcjIiY9ATM3IzUzFSM1MxUjNTMVIzUzESM1MwHyXl5uXl7cXi8hDgFKXl7+tl5e3F5e3F5eAUpeXv62Xl7cXl7cDiEvXm5eXl5eXl5eXl5eAbheXl5eDiEv/sZeEF7MXl5e/sZeEF7MXl4vIQ7sXsxezF7MXgFaXgAADgBKAAAB8gIWAAMABwAOABIAFgAaAB4AIgAmACoALgAyADYAOgAAASM1MwcjNTMHIzU0NjsBASM1MyUjNTMXIzUzByM1MxUjNTMVIzUzNyM1MxUjNTMVIzUzFSM1MxEjNTMB8l5ebl5e3F4vIQ4BSl5e/rZeXtxeXtxeXl5eXl5uXl5eXl5eXl5eXgG4Xl5eXg4hL/7GXhBezF5eXsxezF7sXsxezF7MXgFaXgAAEABKAAAB8wIWAAMABwAOABIAFgAaACEAJQApAC0ANAA4ADwAQABEAEgAAAEjNTMHIzUzByM1NDY7AQEjNTMHIzUzJSM1MwEUBisBNTMlIzUzEyM1MycjNTMVIyImPQEzNyM1MxUjNTMVIzUzFSM1MxEjNTMB8l5ebl5e3F4vIQ4BS15eAV5e/rZeXgFKLyEOXv62Xl7cXl7cXl4OIS9ebl5eXl5eXl5eXl4BuF5eXl4OIS/+xl7MXn5e/qghL15+Xv7GXhBezC8hDuxezF7MXsxeAVpeABAASgAAAfICFgADAAcACwAPABMAFwAbAB8AIwAnACsALwAzADcAOwA/AAABIzUzFSM1MxUjNTMlIzUzASM1MyUjNTMBIzUzJSM1MxcjNTMHIzUzFSM1MzcjNTMVIzUzFSM1MxUjNTMRIzUzAfJeXl5eXl7+tl5eAUpeXv62Xl4BSl5e/rZeXtxeXtxeXl5ebl5eXl5eXl5eXl4BuF7MXsxefl7+WF5+Xv5YXn5ezF5eXsxe7F7MXsxezF4BWl4AAAoASgAAARYCFgADAAcACwAPABMAFwAbAB8AIwAnAAATIzUzFSM1MxUjNTMVIzUzFSM1MzcjNTMVIzUzFSM1MxUjNTMRIzUzqF5eXl5eXl5eXl5uXl5eXl5eXl5eXgG4XsxezF7MXsxe7F7MXsxezF4BWl4ACgBKAAAB8gIWAAMABwALAA8AFgAaAB4AJQApAC0AAAEjNTMVIzUzFSM1MxUjNTMVFAYrATUzJSM1MxcjNTMHIyImPQEzNyM1MxUjNTMB8l5eXl5eXl5eLyEOXv62Xl7cXl7cDiEvXm5eXl5eAbhezF7MXsxefCEvXhBezF5eLyEOEF7MXgAQAEoAAAHyAhYAAwAHAA4AEgAZAB0AIQAlACkALQAxADUAOQA9AEEARQAAASM1MxUjNTMVFAYrATUzJSM1MwEjNTMyFh0BIzUzJSM1MxUjNTMXIzUzByM1MxUjNTM3IzUzFSM1MxUjNTMVIzUzESM1MwHyXl5eXi8hDl7+tl5eAUpeDiEvXl7+tl5eXl7cXl7cXl5eXm5eXl5eXl5eXl5eAbhezF58IS9efl7+WF4vIXxe7F7MXsxeXl7MXuxezF7MXsxeAVpe' $Base64String &= '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' $Base64String &= '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' $Base64String &= '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' $Base64String &= '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' $Base64String &= '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' $Base64String &= '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' $Base64String &= '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' $Base64String &= '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' $Base64String &= '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' $Base64String &= 'AvIABgANAE5AHAEODkAPAAkIBgACAQINBwgHAQMADQwDAwIBCEZ2LzcYAC8XPC8XPAEvPP08Li4uLgAxMAFJaLkACAAOSWhhsEBSWDgRN7kADv/AOFkBIxUzMjY1JyMVFBY7AQGEXg4hL25eLyEOAvJeLyEODiEv//8ASgAAAfICFgAGAJkAAAAEALgCJQGEAvEABgANABQAGwB1QDcBHBxAHQATEgIDAQIUDgYDABsVDQMHAhoZCQMICAcBAwAEAhsaFAMTBBENDAMDAhYVEgMRAQhGdi83GAAvFzwvFzwQ/Rc8EP0XPAEvFzz9FzwvFzz9FzwAMTABSWi5AAgAHEloYbBAUlg4ETe5ABz/wDhZASM1MzIWFQcjNTQ2OwEXFAYrATUzByMiJj0BMwGEXg4hL25eLyEObi8hDl5uDiEvXgKTXi8hDg4hL3whL15eLyEOAP//AEoAAAHyAhYABgCZAAD//wBKAAAB8gIWAAYAmQAA//8ASgAAAfICFgAGAJkAAP//AEoAAAHyAhYABgCZAAD//wBKAAAB8gIWAAYAmQAA//8ASgAAAfICFgAGAJkAAAAQAEoAAAJgAhYABgAKAA4AEgAWABoAHgAiACYALQAxADUAOQA9AEEASAAAASM1MzIWFQcjNTMXIzUzJyM1MxMjNTMlIzUzASM1MyUjNTMXIzUzFxQGKwE1MyUjNTMTIzUzJSM1MxcjNTMXIzUzByMiJj0BMwJgXg4hL25eXm5eXtxeXtxeXv62Xl4BSl5e/rZeXm5eXtwvIQ5e/rZeXtxeXv62Xl5uXl5uXl5uDiEvXgG4Xi8hDl7MXhBe/sZefl7+WF5+Xsxe6iEvXn5e/sZefl7MXsxeXi8hDgAAFABKAAAB8gIWAAYACgAOABIAGQAdACEAJQApAC0AMQA1ADkAPQBBAEgATABQAFQAWwAAMzUjFRQWMyczFSM1MxUjNTMVIzUzNSMiBhUTMxUjNTMVIzUzFSM1MxUjNTMVIxMzFSM1MxUjNTMVIzUzFSM1MxUjEyMVMzI2NSczFSM1MxUjNTMVIzUVMzU0JiOoXi8hUF5eXl5eXl4OIS9uXl5eXl5eXl5eXm5eXl5eXl5eXl5ezF4OIS9eXl5eXl5eXi8hXg4hL8xezF7MXm5eLyH+mF7MXsxezF7MXv6mXsxezF7MXsxe/qZeLyF8XsxezF7MXg4hL///AEoAAAHyAvIAJgA2AAAABgCPAAD//wBKAAAB8gLyACYANgAAAAYAjwAA//8ASgAAAfIDYAAmADwAAAAGAGkAAP//AEoAAAHyA2AAJgA8AAAABgBpAAAAEABKAAAB8gIWAAYACgAOABIAGQAgACQAKAAvADMANwA7AD8AQwBKAE4AAAEjNTMyFhUHIzUzFyM1MycjNTMXFAYrATUzJSM1NDY7ARMjNTMnIzUzFyM1NDY7ARMjNTMlIzUzFyM1MxcjNTMnIzUzFyMiJj0BMwcjNTMB8l4OIS9uXl5uXl7cXl7cLyEOXv62Xi8hDtxeXtxeXm5eLyEO3F5e/rZeXm5eXm5eXtxeXm4OIS9ebl5eAbheLyEOXsxeEF7qIS9efg4hL/7GXhBezA4hL/7GXn5ezF7MXhBezC8hDl5eAAAQAEoAAAHyAhYABgAKAA4AEgAWAB0AJAAoACwAMAA0ADsAPwBDAEoATgAAASM1MzIWHQEjNTMnIzUzByM1MxMjNTMlIzU0NjsBARQGKwE1MyUjNTMTIzUzFyM1MyUjNTMXIzU0NjsBFyM1MycjNTMXIyImPQEzByM1MwHyXg4hL15ebl5ebl5e3F5e/rZeLyEOAUovIQ5e/rZeXtxeXm5eXv62Xl5uXi8hDm5eXtxeXm4OIS9ebl5eAbheLyF8XhBeXl7+xl5+DiEv/qghL15+Xv7GXsxefl7MDiEvzF4QXswvIQ5eXgD//wBKAAAB8gLyACYAPQAAAAYAjwAA//8ASgAAAfIC8gAmAD0AAAAGAI8AAP//' $Base64String &= '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' $Base64String &= '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' $Base64String &= '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' $Base64String &= 'AABcPgAAXFQAAFxqAABcgAAAXJYAAFysAABcwgAAXNgAAFzuAABdBAAAXRoAAF0wAABdRgAAXVwAAF1yAABdiAAAXZ4AAF2uAABeugAAX9gAAGCwAABgwAAAYNAAAGDgAABg8AAAYQAAAGEQAABhIAAAYcIAAGJiAABi7AAAZAgAAGS8AABkzAAAZNwAAGTsAABk/AAAZPwAAGUSAABlKAAAZT4AAGVOAABl/AAAZhIAAGYoAABmPgAAZlQAAGZqAABmgAAAZpYAAGasAABmwgAAZtgAAGbuAABnBAAAZxoAAGfYAABn7gAAaAQAAGgaAABoMAH0AD8AAAAAAT8AAAE/AAABFgBKARYASgHyAEoBhABKAmAASgHyAEoAqABKARYASgEWAEoBFgBKAYQASgCoAEoBhABKAKgASgJgAEoB8gBKAYQASgHyAEoB8gBKAfIASgHyAEoB8gBKAfIASgHyAEoB8gBKARYASgEWAEoBFgBKAfIASgEWAEoB8gBKAmAASgHyAEoB8gBKAfIASgHyAEoB8gBKAfIASgJgAEoB8gBKARcASgHyAEoB8gBKAfIASgLOAEoCYABKAfIASgHyAEoB8gBKAfIASgHyAEoB8gBKAfIASgHyAEoCzgBKAfIASgHyAEoB8gBKARYASgJgAEoBFgBKARcASgHyAEoB8gBKAfIASgHyAEoB8gBKAfIASgHyAEoB8gBKAfIASgHyAEoBFgBKAfIASgHyAEoB8gBKAs4ASgHyAEoB8gBKAfIASgHyAEoB8gBKAfIASgHyAEoB8gBKAfIASgLOAEoB8gBKAfIASgHyAEoBFgBKAKgASgEWAEoBhABKAfIASgHyAEoB8gBKAfIASgEXAEoCYABKAfIASgHyAEoB8gBKAzsASgHyAEoB8gBKAfIASgHyAEoDOwBKAfIASgHyAEoAqP/cAYQASgHyAEoB8gBKAl8ASgM7AEoDOwBKARYASgHyAEoBFgBKARYASgCoAEoAqABKAmAASgHyAEoBFgBKARYASgIkAEoCJABKAfIASgHyAEoB8gBKAfIASgHyAEoBFgBKAfIAuAHyAEoB8gBKAfIAuAHyAEoB8gC4AfIASgHyAEoB8gBKAfIASgHyAEoB8gBKAmAASgHyAEoB8gBKAfIASgHyAEoB8gBKAfIASgHyAEoB8gBKAfIASgHyAEoB8gBKAfIASgHyAEoB8gBKAfIASgHyAEoB8gBKAfIASgHyAEoB8gBKAfIASgHyAEoB8gBKAfIASgHyAEoB8gBKAfIASgEWAEoBFgBKARYASgEWAA4B8gBKAfIASgHyAEoB8gBKAfIASgHyAEoB8gBKAfIASgHyAEoB8gBKAfIASgJgAEoCYABKA6oASgHyAEoB8gBKAfIASgEWAEoBFgBKAfIASgHyAEoB8gBKAmAASgJgAEoBhABKAfIASgHyAEoB8gBKAfIASgHyAEoBPwAAAfIASgHyAEoB8gBKAfIASgJgAEoB8gBKAfIASgHyAEoB8gBKAfIASgHyAEoB8gBKAKgASgCoAEoAqP/cAKj/3AHyAEoB8gBKAfIASgHyAEoB8gBKAfIASgHyAEoAAgAAAAAAAP97ABQAAAAAAAAAAAAAAAAAAAAAAAAAAADuAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQCCAIQAhQCGAIcAiACJAI0AjgCQAJEAlgCdAJ4AoAChAKIAowCmAKkAqgCrALAAsQCyALMAtAC1ALYAtwC8AL0AvgC/AMAAwQDC' $Base64String &= 'AMMAxADFAMYA1wDYANkA2gDbANwA3QDeAN8A4ADhAOIA4wDpAOoA5ADlAOsA7ADtAO4A5gDnAGIAYwBkAGUAZgBnAGgAaQBqAGsAbABtAG4AbwBwAHEAcgBzAHQAdQB2AHcAeAB5AHoAewB8AH0AfgB/AIAAgQCDAIoAiwCMAI8AkgCTAJQAlQCXAJgAmQCaAJsAnACfAKQApQCnAKgArACtAK4ArwC4ALkAugC7AMcAyADJAMoAywDMAM0AzgDPANAA0QDSANMA1ADVANYAAAAAAAMAAAAAAAABJAABAAAAAAAcAAMAAQAAASQAAAEGAAABAAAAAAAAAAEDAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAMEBQYHCAl/CwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJ+REVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHNjZIBtdGWBCnx1goOEhQB6YoaHAGdmiIl9dneKAHIAQ2mMjY6PkGoAkZIAk5SVewAAAAAAAAAAAAAAAAAAAABrAG4AAAAAlmx4bwAAAAAAcAAAAIsAAJdxeWiYmZqbAAAABANuAAAAXgBAAAUAHgB+AKUArACxALgAuwDWAP8BMQFCAVMBYQF4AX4BkgLHAskC3QOUA6kDvAPAIBAgFCAaIB4gIiAmIDAgOiBEISIhJiICIgYiDyIRIhoiHiIrIkgiYCJlIvIlyvAC//8AAAAgAKAApwCuALQAugC/ANgBMQFBAVIBYAF4AX0BkgLGAskC2AOUA6kDvAPAIBAgEyAYIBwgICAmIDAgOSBEISIhJiICIgYiDyIRIhkiHiIrIkgiYCJkIvIlyvAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAF4BGgEkAS4BNAE8AT4BbAG6AboBvAG+AcABwAHCAcIBxAHEAc4BzgHOAc4BzgHOAdAB1AHYAdwB3AHcAd4B3gHeAd4B3gHeAd4B3gHgAeAB4AHgAeAB4gHiAeL//wADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEA1gBzAGMAZACBAG0AZQBqAMQAbgB1ANIAwwCOAMIAyABpAMsAZwCHAJIAbwB2AHIA1wDgAN4A2ACiAKMAawCkAOIApQDfAOEA5gDjAOQA5QCYAKYA6gDnAOgA2QCnAGwA7QDrAOwAqACcAJ4AaACqAKkAqwCtAKwArgBwAK8AsQCwALIAswC1ALQAtgC3AJkAuAC6ALkAuwC9ALwA2gBxAL8AvgDAAMEAnQCfANwAiwCWAJcAeAB5AJoAmwDdAKAAoQB0AIwAlQCOAI8AkACRAJQAjQCTANUA0QDLAM8AEAB6AHsAfgB/AIgAfAB9AIkAYgCGAGYAdwCKAIIAgwCAAMUA0QDMANUAzgDNAIcA0wDHANAA1ADGAMkAygDUANsA6QCEAIUAAAAAAAAAEAAAAPAJCAUAAwMDAwQDBQQCAwMDAwIDAgUEAwQEBAQEBAQEAwMDBAMEBQQEBAQEBAUEAwQEBAYFBAQEBAQEBAQGBAQEAwUDAwQEBAQEBAQEBAQDBAQEBgQEBAQEBAQEBAYEBAQDAgMDBAQEBAMFBAQEBwQE' $Base64String &= 'BAQHBAQCAwQEBQcHAwQDAwICBQQDAwUFBAQEBAQDBAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAMDAwMEBAQEBAQEBAQEBAUFCAQEBAMDBAQEBQUDBAQEBAQDBAQEBAUEBAQEBAQEAgICAgQEBAQEBAQKCQUAAwMDAwUEBgUCAwMDBAIEAgYFBAUFBQUFBQUFAwMDBQMFBgUFBQUFBQYFAwUFBQcGBQUFBQUFBQUHBQUFAwYDAwUFBQUFBQUFBQUDBQUFBwUFBQUFBQUFBQcFBQUDAgMEBQUFBQMGBQUFCAUFBQUIBQUCBAUFBggIAwUDAwICBgUDAwUFBQUFBQUDBQUFBQUFBQUFBQUFBgUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQMDAwMFBQUFBQUFBQUFBQYGCQUFBQMDBQUFBgYEBQUFBQUDBQUFBQYFBQUFBQUFAgICAgUFBQUFBQULCgYABAQDAwUEBwUCAwMDBAIEAgcFBAUFBQUFBQUFAwMDBQMFBwUFBQUFBQcFAwUFBQgHBQUFBQUFBQUIBQUFAwcDAwUFBQUFBQUFBQUDBQUFCAUFBQUFBQUFBQgFBQUDAgMEBQUFBQMHBQUFCQUFBQUJBQUCBAUFBwkJAwUDAwICBwUDAwYGBQUFBQUDBQUFBQUFBQUFBQUFBwUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQMDAwMFBQUFBQUFBQUFBQcHCgUFBQMDBQUFBwcEBQUFBQUEBQUFBQcFBQUFBQUFAgICAgUFBQUFBQUMCwYABAQDAwYFBwYCAwMDBQIFAgcGBQYGBgYGBgYGAwMDBgMGBwYGBgYGBgcGAwYGBgkHBgYGBgYGBgYJBgYGAwcDAwYGBgYGBgYGBgYDBgYGCQYGBgYGBgYGBgkGBgYDAgMFBgYGBgMHBgYGCgYGBgYKBgYCBQYGBwoKAwYDAwICBwYDAwcHBgYGBgYDBgYGBgYGBgYGBgYGBwYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgMDAwMGBgYGBgYGBgYGBgcHCwYGBgMDBgYGBwcFBgYGBgYEBgYGBgcGBgYGBgYGAgICAgYGBgYGBgYNDAcABAQEBAYFCAYCBAQEBQIFAggGBQYGBgYGBgYGBAQEBgQGCAYGBgYGBggGBAYGBgkIBgYGBgYGBgYJBgYGBAgEBAYGBgYGBgYGBgYEBgYGCQYGBgYGBgYGBgkGBgYEAgQFBgYGBgQIBgYGCwYGBgYLBgYCBQYGCAsLBAYEBAICCAYEBAcHBgYGBgYEBgYGBgYGBgYGBgYGCAYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgQEBAQGBgYGBgYGBgYGBggIDAYGBgQEBgYGCAgFBgYGBgYEBgYGBggGBgYGBgYGAgICAgYGBgYGBgYODQcABAQEBAcFCQcCBAQEBQIFAgkHBQcHBwcHBwcHBAQEBwQHCQcHBwcHBwkHBAcHBwoJBwcHBwcHBwcKBwcHBAkEBAcHBwcHBwcHBwcEBwcHCgcHBwcHBwcHBwoHBwcEAgQFBwcHBwQJBwcHDAcHBwcMBwcCBQcHCAwMBAcEBAICCQcEBAgIBwcHBwcEBwcHBwcHBwcHBwcHCQcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwQEBAQHBwcHBwcHBwcHBwkJDQcHBwQEBwcHCQkFBwcHBwcEBwcHBwkHBwcHBwcHAgICAgcHBwcHBwcPDggABQUEBAcGCQcDBAQEBgMGAwkHBgcHBwcHBwcHBAQEBwQHCQcHBwcHBwkHBAcHBwsJBwcHBwcHBwcLBwcHBAkEBAcHBwcHBwcHBwcEBwcHCwcHBwcHBwcHBwsHBwcEAwQGBwcHBwQJBwcHDAcHBwcMBwcDBgcHCQwMBAcEBAMDCQcEBAgIBwcHBwcEBwcHBwcHBwcHBwcHCQcHBwcHBwcHBwcHBwcHBwcH' $Base64String &= 'BwcHBwcHBwcHBwQEBAQHBwcHBwcHBwcHBwkJDgcHBwQEBwcHCQkGBwcHBwcFBwcHBwkHBwcHBwcHAwMDAwcHBwcHBwcQDwgABQUEBAgGCggDBAQEBgMGAwoIBggICAgICAgIBAQECAQICggICAgICAoIBAgICAsKCAgICAgICAgLCAgIBAoEBAgICAgICAgICAgECAgICwgICAgICAgICAsICAgEAwQGCAgICAQKCAgIDQgICAgNCAgDBggICg0NBAgEBAMDCggEBAkJCAgICAgECAgICAgICAgICAgICggICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQICAgICAgICAgICAoKDwgICAQECAgICgoGCAgICAgFCAgICAoICAgICAgIAwMDAwgICAgICAgREAkABQUFBQgHCggDBQUFBwMHAwoIBwgICAgICAgIBQUFCAUICggICAgICAoIBQgICAwKCAgICAgICAgMCAgIBQoFBQgICAgICAgICAgFCAgIDAgICAgICAgICAwICAgFAwUHCAgICAUKCAgIDggICAgOCAgDBwgICg4OBQgFBQMDCggFBQkJCAgICAgFCAgICAgICAgICAgICggICAgICAgICAgICAgICAgICAgICAgICAgICAUFBQUICAgICAgICAgICAoKEAgICAUFCAgICgoHCAgICAgFCAgICAoICAgICAgIAwMDAwgICAgICAgSEQkABgYFBQkHCwkDBQUFBwMHAwsJBwkJCQkJCQkJBQUFCQUJCwkJCQkJCQsJBQkJCQ0LCQkJCQkJCQkNCQkJBQsFBQkJCQkJCQkJCQkFCQkJDQkJCQkJCQkJCQ0JCQkFAwUHCQkJCQULCQkJDwkJCQkPCQkDBwkJCw8PBQkFBQMDCwkFBQoKCQkJCQkFCQkJCQkJCQkJCQkJCwkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQUFBQUJCQkJCQkJCQkJCQsLEQkJCQUFCQkJCwsHCQkJCQkGCQkJCQsJCQkJCQkJAwMDAwkJCQkJCQkTEgoABgYFBQkHDAkDBQUFBwMHAwwJBwkJCQkJCQkJBQUFCQUJDAkJCQkJCQwJBQkJCQ4MCQkJCQkJCQkOCQkJBQwFBQkJCQkJCQkJCQkFCQkJDgkJCQkJCQkJCQ4JCQkFAwUHCQkJCQUMCQkJEAkJCQkQCQkDBwkJDBAQBQkFBQMDDAkFBQoKCQkJCQkFCQkJCQkJCQkJCQkJDAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQUFBQUJCQkJCQkJCQkJCQwMEgkJCQUFCQkJDAwHCQkJCQkGCQkJCQwJCQkJCQkJAwMDAwkJCQkJCQkUEwoABgYGBgoIDAoDBgYGCAMIAwwKCAoKCgoKCgoKBgYGCgYKDAoKCgoKCgwKBgoKCg4MCgoKCgoKCgoOCgoKBgwGBgoKCgoKCgoKCgoGCgoKDgoKCgoKCgoKCg4KCgoGAwYICgoKCgYMCgoKEQoKCgoRCgoDCAoKDBERBgoGBgMDDAoGBgsLCgoKCgoGCgoKCgoKCgoKCgoKDAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgYGBgYKCgoKCgoKCgoKCgwMEwoKCgYGCgoKDAwICgoKCgoGCgoKCgwKCgoKCgoKAwMDAwoKCgoKCgoVFAsABwcGBgoIDQoEBgYGCAQIBA0KCAoKCgoKCgoKBgYGCgYKDQoKCgoKCg0KBgoKCg8NCgoKCgoKCgoPCgoKBg0GBgoKCgoKCgoKCgoGCgoKDwoKCgoKCgoKCg8KCgoGBAYICgoKCgYNCgoKEQoKCgoRCgoECAoKDRERBgoGBgQEDQoGBgwMCgoKCgoGCgoKCgoKCgoKCgoKDQoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgYGBgYKCgoKCgoKCgoKCg0NFAoKCgYGCgoKDQ0ICgoKCgoHCgoKCg0KCgoKCgoKBAQE' $Base64String &= 'BAoKCgoKCgoWFQsABwcGBgsJDQsEBgYGCQQJBA0LCQsLCwsLCwsLBgYGCwYLDQsLCwsLCw0LBgsLCxANCwsLCwsLCwsQCwsLBg0GBgsLCwsLCwsLCwsGCwsLEAsLCwsLCwsLCxALCwsGBAYJCwsLCwYNCwsLEgsLCwsSCwsECQsLDRISBgsGBgQEDQsGBgwMCwsLCwsGCwsLCwsLCwsLCwsLDQsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwYGBgYLCwsLCwsLCwsLCw0NFQsLCwYGCwsLDQ0JCwsLCwsHCwsLCw0LCwsLCwsLBAQEBAsLCwsLCwsXFgwABwcGBgsJDgsEBgYGCQQJBA4LCQsLCwsLCwsLBgYGCwYLDgsLCwsLCw4LBgsLCxEOCwsLCwsLCwsRCwsLBg4GBgsLCwsLCwsLCwsGCwsLEQsLCwsLCwsLCxELCwsGBAYJCwsLCwYOCwsLEwsLCwsTCwsECQsLDhMTBgsGBgQEDgsGBg0NCwsLCwsGCwsLCwsLCwsLCwsLDgsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwYGBgYLCwsLCwsLCwsLCw4OFgsLCwYGCwsLDg4JCwsLCwsHCwsLCw4LCwsLCwsLBAQEBAsLCwsLCwsYFwwACAgHBwwJDwwEBwcHCQQJBA8MCQwMDAwMDAwMBwcHDAcMDwwMDAwMDA8MBwwMDBEPDAwMDAwMDAwRDAwMBw8HBwwMDAwMDAwMDAwHDAwMEQwMDAwMDAwMDBEMDAwHBAcJDAwMDAcPDAwMFAwMDAwUDAwECQwMDxQUBwwHBwQEDwwHBw0NDAwMDAwHDAwMDAwMDAwMDAwMDwwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAcHBwcMDAwMDAwMDAwMDA8PFwwMDAcHDAwMDw8JDAwMDAwIDAwMDA8MDAwMDAwMBAQEBAwMDAwMDAwAAAHOAZAABQABArwCigAAAI8CvAKKAAABxQAyAQMAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQWx0cwBAACDwAgNg/yQAAANgANwAAAABAAAAAQAA7akOdV8PPPUAAAPoAAAAALcUv64AAAAAtxS/rv/c/yQDqgNgAAAAAwACAAEAAAAAAAEAAANg/yQAAAOq/9z/kgOqAAEAAAAAAAAAAAAAAAAAAADuAAEAAADuAIoAHQBoABcAAgAIAEAACgAAAGIAqgACAAM=' Return Binary(_WinAPI_Base64Decode($Base64String)) EndFunc ;==>AstronautIII Func _WinAPI_LZNTDecompress(ByRef $tInput, ByRef $tOutput, $iBufferSize);UEZ $tOutput = DllStructCreate("byte[" & $iBufferSize & "]") If @error Then Return SetError(1, 0, 0) Local $aRet = DllCall("ntdll.dll", "uint", "RtlDecompressBuffer", "ushort", 0x0002, "struct*", $tOutput, "ulong", $iBufferSize, "struct*", $tInput, "ulong", DllStructGetSize($tInput), "ulong*", 0) If @error Then Return SetError(2, 0, 0) If $aRet[0] Then Return SetError(3, $aRet[0], 0) Return $aRet[6] EndFunc ;==>_WinAPI_LZNTDecompress Func _WinAPI_Base64Decode($sB64String);UEZ Local $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "ptr", 0, "dword*", 0, "ptr", 0, "ptr", 0) If @error Or Not $aCrypt[0] Then Return SetError(1, 0, "") Local $bBuffer = DllStructCreate("byte[" & $aCrypt[5] & "]") $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "struct*", $bBuffer, "dword*", $aCrypt[5], "ptr", 0, "ptr", 0) If @error Or Not $aCrypt[0] Then Return SetError(2, 0, "") Return DllStructGetData($bBuffer, 1) EndFunc ;==>_WinAPI_Base64Decode1 point
-
Hi, these are some lines from one of my projects where a base 64 encoded font is installed "from memory" ;****************** FONT ************* Global $_DBG_Fontname = "AssembleItDBG" ;modifiziert aus DejaVu Sans Mono Global $_DBG_Fontsize = 8.5 Global Const $_DBG_bFont = _bfont() ;base64encoded font Global $_DBG_tFont = DllStructCreate('byte[' & BinaryLen($_DBG_bFont) & ']') DllStructSetData($_DBG_tFont, 1, $_DBG_bFont) Global $_DBG_hFont = _DBG_WinAPI_AddFontMemResourceEx(DllStructGetPtr($_DBG_tFont), DllStructGetSize($_DBG_tFont)) ;****************** G U I ************* Global $_DBG_GUI = GUICreate("AssembleIt2 Debug-Info 2.0", 730, 660, 10, 10, 0, $WS_EX_DLGMODALFRAME) GUISetFont($_DBG_Fontsize, 400, 0, $_DBG_Fontname)1 point
-
Memory leak script stopper ( or not )
ioa747 reacted to argumentum for a topic
I was asking around on how to detect memory leaks and came up with a logger ( or just stop execution, or restart ). Here is the code. ( should have done a UDF but maybe there is no need for such ) #AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w 4 -w 6 -w 7 #include <SQLite.au3> #include <WinAPISys.au3> #include <WinAPIProc.au3> #include <Date.au3> #include <Array.au3>; For _ArrayDisplay() Example() Func Example() ConsoleWrite(MemLeakTooMuch() & @CRLF) ; call once at first to initialize the baseline. Local $a = MemLeakLog(1) ; ..you could call this on the fly and get an array _ArrayDisplay($a) ; call on AdlibRegister() or other means ; Ex: AdlibRegister("OnMemLeakRestart", 3600000) ; once an hour ; While Sleep(50) ; ... ... ; WEnd EndFunc ;==>Example #Region MemLeak Func OnMemLeakRestart() ; Local Static $iTriggered = 0 If MemLeakTooMuch() Then If Not $iTriggered Then $iTriggered = 1 AdlibRegister("OnMemLeakRestart", 60000) ; since it triggered, check more often EndIf If _WinAPI_GetIdleTime() > 600000 Then ; over 10 min. maybe ?, to not bother the user ? ShellExecute(@ScriptFullPath) ; restart itself if it must, but if you do, ; keep that in mind while coding. Exit 3 ; use the exit code you please other than 1 or 2, EndIf ; as AutoIt may use it for itself. EndIf EndFunc ;==>OnMemLeakRestart Func MemLeakLog($ReturnAnArray = 0) Local $aMethod[5] = ["EXITCLOSE_NORMAL", "EXITCLOSE_BYEXIT", "EXITCLOSE_BYCLICK", "EXITCLOSE_BYLOGOFF", "EXITCLOSE_BYSHUTDOWN"] Local $iMethod = Execute("@exitMethod") Local $aDesc[14] = ["number of page faults", "peak working set size, in bytes", "current working set size, in bytes", _ "peak paged pool usage, in bytes", "current paged pool usage, in bytes", "peak nonpaged pool usage, in bytes", _ "current nonpaged pool usage, in bytes", "current space allocated for the pagefile, in bytes", _ "peak space allocated for the pagefile, in bytes", "current amount of memory that cannot be shared with other processes, in bytes", _ "ProcessHandleCount", "ProcessThreadsCount", "GDI objects", "USER objects"] Local $s = @YEAR & "." & @MON & "." & @MDAY & "_" & @HOUR & ":" & @MIN & ":" & @SEC $s &= " - RunTime: " & _Convert(gTimer()) & " - PID: " & @AutoItPID If IsInt($iMethod) Then $s &= " - ExitCode: " & @exitCode $s &= " - ExitMethod: " & $iMethod & " (" & $aMethod[$iMethod] & ")" EndIf Local $a[4][15] $a[1][0] = "Starting:" $a[2][0] = " Exiting:" $a[3][0] = " Diff.:" MemLeakTooMuch() Local $b = MemLeakTooMuch(-2), $c = MemLeakTooMuch(-3) For $n = 0 To UBound($c) - 1 $a[0][$n + 1] = $aDesc[$n] $a[1][$n + 1] = $b[$n] $a[2][$n + 1] = $c[$n] $a[3][$n + 1] = $c[$n] - $b[$n] Switch $n Case 0, 10, 11, 12, 13, 14 ; nothing, is a count number Case Else $a[3][$n + 1] = ByteSuffix($a[3][$n + 1]) EndSwitch $a[3][$n + 1] &= " ( x" & (($b[$n] > 0 And $b[$n] > 0) ? Round($c[$n] / $b[$n], 1) : "1") & " )" Next If Int(Eval("ReturnAnArray")) Then $a[0][0] = _Convert(gTimer()) Return $a Else FileWriteLine(StringTrimRight(@ScriptFullPath, 4) & ".ProcessInfo.log", $s & @CRLF & _ _SQLite_Display2DResult($a, 0, True) & Eval("sErrorHandler") & @CRLF) ; I save the data from ObjEvent("AutoIt.Error", "_ErrFunc") to $sErrorHandler EndIf EndFunc ;==>MemLeakLog Func MemLeakTooMuch($iPid = 0, $iMutliplier = 4) ; in case this is for some other PID, but only one =/ Local Static $aInitProcessMemoryInfo = 99, $aLastProcessMemoryInfo Local $ret = False, $a, $n, $aTemp If $iPid = -2 Then Return $aInitProcessMemoryInfo ; returns the initial readings If $iPid = -3 Then Return $aLastProcessMemoryInfo ; returns the last readings If $aInitProcessMemoryInfo = 99 Then $aTemp = _WinAPI_GetProcessMemoryInfo($iPid) If Not (UBound($aTemp) = 10) Then Return SetError(1, 0, $ret) $aLastProcessMemoryInfo = $aTemp Else $aTemp = _WinAPI_GetProcessMemoryInfo($iPid) If Not (UBound($aTemp) = 10) Then Return SetError(1, 0, $ret) $aLastProcessMemoryInfo = $aTemp For $n = 1 To UBound($aTemp) - 1 ; I don't think "page faults" is leakage, so it's omited. If $aTemp[$n] > $aInitProcessMemoryInfo[$n] * $iMutliplier Then $ret = True Next EndIf ReDim $aLastProcessMemoryInfo[14] ; to hold the next values $aLastProcessMemoryInfo[10] = _WinAPI_GetProcessHandleCount($iPid) If $aLastProcessMemoryInfo[10] > 2000 Then $ret = True ; dropping handles ? $a = _WinAPI_EnumProcessThreads($iPid) $aLastProcessMemoryInfo[11] = UBound($a) - 1 If $aLastProcessMemoryInfo[11] > 200 Then $ret = True ; dropping threads ? If Not $iPid Then $iPid = -1 $aLastProcessMemoryInfo[12] = _WinAPI_GetGuiResources(0, $iPid) ; count of GDI objects. $aLastProcessMemoryInfo[13] = _WinAPI_GetGuiResources(1, $iPid) ; count of USER objects If $aLastProcessMemoryInfo[12] > 1000 Then $ret = True ; dropping GDI objects ? If $aLastProcessMemoryInfo[13] > 2000 Then $ret = True ; dropping USER objects ? If $aInitProcessMemoryInfo = 99 Then gTimer() ; init. the timer now, if was not at the top of the script $aInitProcessMemoryInfo = $aLastProcessMemoryInfo OnAutoItExitRegister("MemLeakLog") ; ..if you wanna keep a log EndIf Return $ret EndFunc ;==>MemLeakTooMuch Func _Convert($ms) ; https://www.autoitscript.com/forum/topic/163621-convert-ms-to-dayhourminsec/?do=findComment&comment=1192334 Local $day, $hour, $min, $sec _TicksToTime($ms, $hour, $min, $sec) If $hour > 24 Then $day = $hour / 24 $hour = Mod($hour, 24) EndIf Return StringReplace(StringFormat("%03i %02i:%02i:%02i", $day, $hour, $min, $sec), "000 ", "") EndFunc ;==>_Convert Func gTimer() Local Static $Timer = TimerInit() Return TimerDiff($Timer) EndFunc ;==>gTimer Func ByteSuffix($iBytes) ; https://www.autoitscript.com/autoit3/docs/functions/FileGetSize.htm Local $iIndex = 0, $aArray = [' bytes', ' KB', ' MB', ' GB', ' TB', ' PB', ' EB', ' ZB', ' YB'] While $iBytes > 1023 $iIndex += 1 $iBytes /= 1024 WEnd Return Round($iBytes) & $aArray[$iIndex] EndFunc ;==>ByteSuffix #EndRegion MemLeak I'm gonna use it for a pain in the neck script. If you find ways to improve it, or something I missed, let me know. 2019.01.05 update: Added GDI objects and USER objects. Added return array. Fixed boo-boo. Added Diff. multiplier.1 point -
Converting Array To String
ruskiem reacted to fireryblaze for a topic
#include<Array.au3> Dim $aSplit[69] For $i=0 to 68 step 1 $aSplit[$i] = $i Next $Number1 = _ArrayToString($aSplit, "|") MsgBox(0, "", $Number1) Try this it should demonstrate how to get it to work.1 point -
Force update/redraw gui
boomingranny reacted to Champak for a topic
Ah, the _WinAPI_RedrawWindow function is what I came across before and couldn't remember where/what it was. Thanks to both.1 point