Jump to content

File to Base64 String Code Generator v1.20 Build 2020-06-05 (embed your files easily)


Recommended Posts

  • Replies 164
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

I'm using very often binary strings to read images, sounds, etc. directly for memory to avoid any file installation.   Here a small tool to convert any file to a base64 string incl. compress

If you have a closer look to _GUICtrlStatic_SetImage() you will see that it is more or less the same I did except to set it for labels. Here the shorten example with a label control instead of pictu

@jscript: your are welcome. Updated to v1.00 final and changed name to File to Base64 String Code Generator. If you find bugs or have any suggestions please let me know! Br, UEZ

Posted Images

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Link to post
Share on other sites
  • 3 weeks later...

What was the original font file format in the example? 

*.TTF  ?

use a font ... see the third example from the author here

On 29. 10. 2011 at 11:22 PM, UEZ said:

Display Font from Memory:

 

Edited by R_P
Link to post
Share on other sites
24 minutes ago, R_P said:

What was the original font file format in the example? 

*.TTF  ?

use a font ... see the third example from the author here

 

Probably yes. Save the binary string to a file and check it out. ;)

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Link to post
Share on other sites
  • 7 months later...

Wonderful tool!

Your examples might need updating.

I'm using AutoIt 3.3.14.5 and the concurrent SciTE to see your examples available in your original post. When I use SyntaxCheck or F5 Go, two errors frequently appear for the examples I've tried thus far:

1. #include <WinAPISysWin.au3> needs to be added

2. #ULW_ALPHA must need another include but haven't figured out yet what it is.  In the past few days I've just substituted the number 2 in place of it but I'd love to know the real fix.

Link to post
Share on other sites
8 hours ago, timmy2 said:

Your examples might need updating.

all you need to change to make it "newer" is

#include <WinAPIProc.au3>
Global Const $WH_CBT = 5
;~ Global Const $SND_ASYNC = 0x00000001
;~ Global Const $SND_MEMORY = 0x00000004
;~ Global Const $SND_NOSTOP = 0x00000010

to change/add those =)

Link to post
Share on other sites
  • 1 month later...

Hi UEZ, I'm trying to use an embbeded icon in a TreeView control without success, any help will be appreciated.

#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 = Load_BMP_From_Mem(Exit24X24png(), True)



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)
_GUICtrlTreeView_SetImageIndex($idTreeView, $Icon, 6)

GUICtrlCreateTreeViewItem("Item 1", $TVRoot)
GUICtrlCreateTreeViewItem("Item 2", $TVRoot)
GUICtrlSetState($TVRoot, BitOR($GUI_EXPAND, $GUI_DEFBUTTON))

GUISetState(@SW_SHOW)

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE

GUIDelete()
_GDIPlus_Shutdown()


Func Load_BMP_From_Mem($bImage, $hHBITMAP = False) ;UEZ
    If Not IsBinary($bImage) Then Return
    Local $declared = True
    If Not $__g_hGDIPDll Then
        _GDIPlus_Startup()
        $declared = False
    EndIf
    Local Const $memBitmap = Binary($bImage) ;load image  saved in variable (memory) and convert it to binary
    Local Const $len = BinaryLen($memBitmap) ;get length of image
    Local Const $hData = _MemGlobalAlloc($len, $GMEM_MOVEABLE) ;allocates movable memory  ($GMEM_MOVEABLE = 0x0002)
    Local Const $pData = _MemGlobalLock($hData) ;translate the handle into a pointer
    Local $tMem = DllStructCreate("byte[" & $len & "]", $pData) ;create struct
    DllStructSetData($tMem, 1, $memBitmap) ;fill struct with image data
    _MemGlobalUnlock($hData) ;decrements the lock count  associated with a memory object that was allocated with GMEM_MOVEABLE
    Local $hStream = DllCall("ole32.dll", "int", "CreateStreamOnHGlobal", "handle", $pData, "int", True, "ptr*", 0)
    $hStream = $hStream[3]
    Local $hBitmap = DllCall($__g_hGDIPDll, "uint", "GdipCreateBitmapFromStream", "ptr", $hStream, "int*", 0) ;Creates a Bitmap object based on an IStream COM interface
    $hBitmap = $hBitmap[2]
    Local Const $tVARIANT = DllStructCreate("word vt;word r1;word r2;word r3;ptr data; ptr")
    DllCall("oleaut32.dll", "long", "DispCallFunc", "ptr", $hStream, "dword", 8 + 8 * @AutoItX64, "dword", 4, "dword", 23, "dword", 0, "ptr", 0, "ptr", 0, "ptr", DllStructGetPtr($tVARIANT)) ;release memory from $hStream to avoid memory leak
    $tMem = 0
    If $hHBITMAP Then
        Local Const $hHBmp = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap)
        _GDIPlus_BitmapDispose($hBitmap)
        If Not $declared Then _GDIPlus_Shutdown()
        Return $hHBmp
    EndIf
    If Not $declared Then _GDIPlus_Shutdown()
    Return $hBitmap
EndFunc   ;==>Load_BMP_From_Mem

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   ;==>Exit24X24png

 

Link to post
Share on other sites

Hi,

this is an amazing tool. Exactly what I'm looking for.

But I have a small question, is there a simpler way to use a embedded font? I mean without GDI+?

I would like to use something like this:

Local $bFont_RobotoRegular = _Font_RobotoRegular() ;binary function from file to base64 string code generator
_WinAPI_AddFontResourceEx($bFont_RobotoRegular, $FR_PRIVATE)

Global Const $sFontname = "Roboto-Regular"

Local $hLabel = GUICtrlCreateLabel($sString, $iPosx, $iPosy)
GUICtrlSetFont($hLabel, $iTextSize, $iTextWeight, $iTextAttribute, $sFontname)

Just one simple function call to "use" or privatly install the binary string font.

Thanks in advance :3

With best regards,

borsTiHD

Link to post
Share on other sites

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)

 

Link to post
Share on other sites

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 = 'AAEAAAAOADAAAwCwT1MvMoLNP68AAImcAAAATmNtYXDgu9K2AAB2AAAABJJjdnQg+HZcmQAAA+gAAAAwZnBnbYMzwk8AAAPUAAAAFGdseWYgIkjsAAAEXAAAaDBoZG14aed+FgAAepQAAA8IaGVhZNDDwsEAAInsAAAANmhoZWEG6QNPAACKJAAAACRobXR4sf5DXQAAcEgAAAO4bG9jYQA8jdAAAGyMAAADvG1heHABmQHhAACKSAAAACBuYW1lD2D1NgAAAOwAAALocG9zdDfSNt4AAHQAAAAB/nByZXDOo7iKAAAEGAAAAEMAAAAVAQIAAAAAAAAAAABMACYAAAAAAAAAAQAaAH8AAAAAAAAAAgAOAKAAAAAAAAAAAwBWAQAAAAAAAAAABAAaALsAAAAAAAAABQBIAXoAAAAAAAAABgAYAc4AAQAAAAAAAAAmAAAAAQAAAAAAAQANAHIAAQAAAAAAAgAHAJkAAQAAAAAAAwArANUAAQAAAAAABAANAK4AAQAAAAAABQAkAVYAAQAAAAAABgAMAcIAAwABBAkAAABMACYAAwABBAkAAQAaAH8AAwABBAkAAgAOAKAAAwABBAkAAwBWAQAAAwABBAkABAAaALsAAwABBAkABQBIAXoAAwABBAkABgAYAc5Bc3Ryb25hdXQgqTIwMDEsIEZvbnSlYaVsaWNpb3VzIEZvbnRzLgBBAHMAdAByAG8AbgBhAHUAdAAgAKkAMgAwADAAMQAsACAARgBvAG4AdCAiAGEgIgBsAGkAYwBpAG8AdQBzACAARgBvAG4AdABzAC5Bc3Ryb25hdXQgSUlJAEEAcwB0AHIAbwBuAGEAdQB0ACAASQBJAElSZWd1bGFyAFIAZQBnAHUAbABhAHJBc3Ryb25hdXQgSUlJAEEAcwB0AHIAbwBuAGEAdQB0ACAASQBJAElNYWNyb21lZGlhIEZvbnRvZ3JhcGhlciA0LjEuMyBBc3Ryb25hdXQgSUlJAE0AYQBjAHIAbwBtAGUAZABpAGEAIABGAG8AbgB0AG8AZwByAGEAcABoAGUAcgAgADQALgAxAC4AMwAgAEEAcwB0AHIAbwBuAGEAdQB0ACAASQBJAElNYWNyb21lZGlhIEZvbnRvZ3JhcGhlciA0LjEuMyA1LzEvMDEATQBhAGMAcgBvAG0AZQBkAGkAYQAgAEYAbwBuAHQAbwBnAHIAYQBwAGgAZQByACAANAAuADEALgAzACAANQAvADEALwAwADFBc3Ryb25hdXRJSUkAQQBzAHQAcgBvAG4AYQB1AHQASQBJAElAAQAsdkUgsAMlRSNhaBgjaGBELQAAAhYAXgBuAF4AbgE6AagBOgGoAVpaZxIG0rhqGPgqYaMOQO7SgDonVaKHAAEADUAPCgoJCQgIBwcGBgEBAAABjbgB/4VFaERFaERFaERFaERFaERFaERFaESzAwJGACuzBQRGACuxAgJFaESxBARFaEQAAAIAPwAAAbYDIAADAAcAVkAgAQgIQAkCBwQCAQAGBQIDAgUEBAAHBgQBAgEDAAABAEZ2LzcYAD88LzwQ/TwQ/TwBLzz9PC88/TwAMTABSWi5AAAACEloYbBAUlg4ETe5AAj/wDhZMxEhESUzESM/AXf+x/r6AyD84D8CowAKAEoAAAEWAhYAAwAHAAsAEgAWABoAHgAiACkALQAAEyM1MxUjNTMVIzUzFSMiJj0BMxUjNTMTMzUjFTM1IxUzNSMVMzI2PQEjFTM1I6heXl5eXl4OIS9eXl4QXl5eXl5eDiEvXl5eAbhezF7MXswvIQ7MXgFaXsxezF7MLyEOzF4ABABKAUoBFgIWAAMABwAOABUAdkA4ARYWQBcADQwCAwECDggDAwAVDwcDBAIUEwYDBQUEAQMABAIVFA4DDQQIEA8JAwgHBgMDAgEBBUZ2LzcYAD8XPC8XPBD9FzwQ/Rc8AS8XPP0XPC8XPP0XPAAxMAFJaLkABQAWSWhhsEBSWDgR'
    $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 &= '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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 &= '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_Base64Decode

 

Link to post
Share on other sites
21 hours ago, jcpetu said:

Hi UEZ, I'm trying to use an embbeded icon in a TreeView control without success, any help will be appreciated.

#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 = Load_BMP_From_Mem(Exit24X24png(), True)



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)
_GUICtrlTreeView_SetImageIndex($idTreeView, $Icon, 6)

GUICtrlCreateTreeViewItem("Item 1", $TVRoot)
GUICtrlCreateTreeViewItem("Item 2", $TVRoot)
GUICtrlSetState($TVRoot, BitOR($GUI_EXPAND, $GUI_DEFBUTTON))

GUISetState(@SW_SHOW)

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE

GUIDelete()
_GDIPlus_Shutdown()


Func Load_BMP_From_Mem($bImage, $hHBITMAP = False) ;UEZ
    If Not IsBinary($bImage) Then Return
    Local $declared = True
    If Not $__g_hGDIPDll Then
        _GDIPlus_Startup()
        $declared = False
    EndIf
    Local Const $memBitmap = Binary($bImage) ;load image  saved in variable (memory) and convert it to binary
    Local Const $len = BinaryLen($memBitmap) ;get length of image
    Local Const $hData = _MemGlobalAlloc($len, $GMEM_MOVEABLE) ;allocates movable memory  ($GMEM_MOVEABLE = 0x0002)
    Local Const $pData = _MemGlobalLock($hData) ;translate the handle into a pointer
    Local $tMem = DllStructCreate("byte[" & $len & "]", $pData) ;create struct
    DllStructSetData($tMem, 1, $memBitmap) ;fill struct with image data
    _MemGlobalUnlock($hData) ;decrements the lock count  associated with a memory object that was allocated with GMEM_MOVEABLE
    Local $hStream = DllCall("ole32.dll", "int", "CreateStreamOnHGlobal", "handle", $pData, "int", True, "ptr*", 0)
    $hStream = $hStream[3]
    Local $hBitmap = DllCall($__g_hGDIPDll, "uint", "GdipCreateBitmapFromStream", "ptr", $hStream, "int*", 0) ;Creates a Bitmap object based on an IStream COM interface
    $hBitmap = $hBitmap[2]
    Local Const $tVARIANT = DllStructCreate("word vt;word r1;word r2;word r3;ptr data; ptr")
    DllCall("oleaut32.dll", "long", "DispCallFunc", "ptr", $hStream, "dword", 8 + 8 * @AutoItX64, "dword", 4, "dword", 23, "dword", 0, "ptr", 0, "ptr", 0, "ptr", DllStructGetPtr($tVARIANT)) ;release memory from $hStream to avoid memory leak
    $tMem = 0
    If $hHBITMAP Then
        Local Const $hHBmp = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap)
        _GDIPlus_BitmapDispose($hBitmap)
        If Not $declared Then _GDIPlus_Shutdown()
        Return $hHBmp
    EndIf
    If Not $declared Then _GDIPlus_Shutdown()
    Return $hBitmap
EndFunc   ;==>Load_BMP_From_Mem

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 = 'iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3wgdFgkAdNakUgAABeJJREFUSMeVlWtsHFcVgL+589qZfdu4dmq3cR2/0rhNbNOGiEdk11XdByWSiUTC40//wB/4QcUfWkAqEkI8BEIgEBJIVRP+VGlFJURqBcVpTWIgJU4cx0mU+LUmju1d73N2d3ZmLj9GbVNEUzjSka507znfuefce47CR0griGFFUUxQFRAKoIOfBXkd/CUp5d3slQ/bsEH9kaaZI4EfvxclFVVIamADNMBxJIVlyE8JUfy657mA/78ClCOaZv5cVVtaZNDt6JFhv1ofFoF7nwJxBQigFKjGimYaf7O8+ju3FHHjed/fOh6C5N0AykuRSPQFXet2hT5aqzeOWrXyHm3vXp2xMZX77wcpYWUF3pz0G3OXGjUrftEy1Fc03zvzA8+78e1arfKfkPecf9+247Kpab+Tav5JJRLNy/37pTx5UspMRsrFRSlv3nxfMxkp33hDyn17ZcWK5Z10849lU9OjL1hW7M7A1XcXz1u29VLM7q0K7YsyCL5qf/lIjBe/A4YJpSJ4PiSTYBiwuQXb2xCLwcQEetWJ+HPzD3uqXnvc0DOznpdf8H3vPUAS1FfTyR3Cij0bFEvfsA89E+PwYag40NEOuRwIFbq7IR6HpUXwA0inYWkZ9jyI5jhG/dr1fjVqL4+r6soPHacMSAHws3TaaoraPbVK7Uv2jnsSPPU05Aqwby90dUF7OxRL4PsQBFCqQEsL9PfB0BBsZuHJcaJNyaaypxxNR62eX6ZSEQDxkGGIz8SjibKVPhDLbfRy6BDkC6Fxa1uYP88Ht/F+6eoueF5Y8Ht3wMAAlEowOkokvzXsxtKD44lYAhCixzTFPclUM5XKsEgmdFpawnR0doalmrsCp/4Crhs6lEDVgdNTcPVaCNzVBUpoY/oN1XGDA23JROoriYQipBBqNBFPiqrTQXuHIJ8H24Z0Kox0cjKsVL0eApBQdUH68Oc3Q2AsDs1NYRrb2tAq5U4jnkzviEQ0YWqaghW3ReBH0TUoFMG0wsgWrkPdAacawnQdVBVq1VCzW5BZA1WAbkAuC6aJ4vtJLRa1Y4YhNKkKsC1QNSiVIZOBQiEElCqQzYEdgWwRfv07UASsLIEhYTMHTi08WyzB4hJUKqBGIBpF0TQEqiaxIk5gR6u4bhjNu4CBfvAFmCbETChtQvE2JK0wYsOGXTvD1BWLoGlQryPtaMkzzWpJUQLRUBS/qqvFoKV1je3tAFWFjduwlYNUAkZHwHHBNEKQYYKhQ70Bzz4TOs1tw+Ji2GsLBfyOnSuuUPIbnueLq+VysFF1sux56J+B63lsbsLGOsxeDG8x/hiMPAblBvgy/GCVBoyOwcFPhWfemYW1DNxepx5JSHN397mtanX796urgXa5WAzOZfPFL/T0nC0OfHwpceFCL93d8NofobcH7muHsYNw4BG4sRw67HkArEi4Xl6FV46DIuH6dWpDBy8lbeX8dDZfBAIVYHJtzf9af1/DeHhQ+HPzn9DyWxq7HoB/zEJrK8Sioba2hKpr4QO4cAl+9RtQPZiZwTHiTuTpx39RzufeeuTEazlAqgD1IJBJI+KOdLWX6x1dETk7N6Btbwr6uuHGTVjfCF/TZhYy/4IrV+HsWfj7DAQuTJ2hnq/UefKpY6apnPju9Nmb07duuR/opqcyq/7uZLo02Ne10ejYiX95Ybc281eNjzVDUwryedjahNvrYY1KBZi7BCdOUFWtavDZzx2zW1PHjl+8ePmbU1OVDxs44tWJieTE4L5+104/UTs1dcQ+fbJXUwn7TVtb2PDW12F+HheN2sj4lcjYp48bhezkH86fv3r09deL4dC7y8h88eBB+1ujI22xrs7dlYZxwH9r+lFx7UqHsp2PoijIdKoc9D24qn1y'
    $ExitPNG24X24png &= '/zlbuDOlxaWFn06dWf/e6dPVjxqZd4r2p+eeswZ7utLpzs60Hk8kha6bALLRqNfz+UJhdTX79vxC4fMvv+z8P0P/A5IyTXF4aEjtaG5WLV1XvCAAKYPlbDb47fS0H9yRjv8m/wZF7Zsuu2STYgAAAABJRU5ErkJggg=='
    Return Binary(WinAPI_Base64Decode($ExitPNG24X24png))
EndFunc   ;==>Exit24X24png

 

 

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 = 'iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3wgdFgkAdNakUgAABeJJREFUSMeVlWtsHFcVgL+589qZfdu4dmq3cR2/0rhNbNOGiEdk11XdByWSiUTC40//wB/4QcUfWkAqEkI8BEIgEBJIVRP+VGlFJURqBcVpTWIgJU4cx0mU+LUmju1d73N2d3ZmLj9GbVNEUzjSka507znfuefce47CR0griGFFUUxQFRAKoIOfBXkd/CUp5d3slQ/bsEH9kaaZI4EfvxclFVVIamADNMBxJIVlyE8JUfy657mA/78ClCOaZv5cVVtaZNDt6JFhv1ofFoF7nwJxBQigFKjGimYaf7O8+ju3FHHjed/fOh6C5N0AykuRSPQFXet2hT5aqzeOWrXyHm3vXp2xMZX77wcpYWUF3pz0G3OXGjUrftEy1Fc03zvzA8+78e1arfKfkPecf9+247Kpab+Tav5JJRLNy/37pTx5UspMRsrFRSlv3nxfMxkp33hDyn17ZcWK5Z10849lU9OjL1hW7M7A1XcXz1u29VLM7q0K7YsyCL5qf/lIjBe/A4YJpSJ4PiSTYBiwuQXb2xCLwcQEetWJ+HPzD3uqXnvc0DOznpdf8H3vPUAS1FfTyR3Cij0bFEvfsA89E+PwYag40NEOuRwIFbq7IR6HpUXwA0inYWkZ9jyI5jhG/dr1fjVqL4+r6soPHacMSAHws3TaaoraPbVK7Uv2jnsSPPU05Aqwby90dUF7OxRL4PsQBFCqQEsL9PfB0BBsZuHJcaJNyaaypxxNR62eX6ZSEQDxkGGIz8SjibKVPhDLbfRy6BDkC6Fxa1uYP88Ht/F+6eoueF5Y8Ht3wMAAlEowOkokvzXsxtKD44lYAhCixzTFPclUM5XKsEgmdFpawnR0doalmrsCp/4Crhs6lEDVgdNTcPVaCNzVBUpoY/oN1XGDA23JROoriYQipBBqNBFPiqrTQXuHIJ8H24Z0Kox0cjKsVL0eApBQdUH68Oc3Q2AsDs1NYRrb2tAq5U4jnkzviEQ0YWqaghW3ReBH0TUoFMG0wsgWrkPdAacawnQdVBVq1VCzW5BZA1WAbkAuC6aJ4vtJLRa1Y4YhNKkKsC1QNSiVIZOBQiEElCqQzYEdgWwRfv07UASsLIEhYTMHTi08WyzB4hJUKqBGIBpF0TQEqiaxIk5gR6u4bhjNu4CBfvAFmCbETChtQvE2JK0wYsOGXTvD1BWLoGlQryPtaMkzzWpJUQLRUBS/qqvFoKV1je3tAFWFjduwlYNUAkZHwHHBNEKQYYKhQ70Bzz4TOs1tw+Ji2GsLBfyOnSuuUPIbnueLq+VysFF1sux56J+B63lsbsLGOsxeDG8x/hiMPAblBvgy/GCVBoyOwcFPhWfemYW1DNxepx5JSHN397mtanX796urgXa5WAzOZfPFL/T0nC0OfHwpceFCL93d8NofobcH7muHsYNw4BG4sRw67HkArEi4Xl6FV46DIuH6dWpDBy8lbeX8dDZfBAIVYHJtzf9af1/DeHhQ+HPzn9DyWxq7HoB/zEJrK8Sioba2hKpr4QO4cAl+9RtQPZiZwTHiTuTpx39RzufeeuTEazlAqgD1IJBJI+KOdLWX6x1dETk7N6Btbwr6uuHGTVjfCF/TZhYy/4IrV+HsWfj7DAQuTJ2hnq/UefKpY6apnPju9Nmb07duuR/opqcyq/7uZLo02Ne10ejYiX95Ybc281eNjzVDUwryedjahNvrYY1KBZi7BCdOUFWtavDZzx2zW1PHjl+8ePmbU1OVDxs44tWJieTE4L5+104/UTs1dcQ+fbJXUwn7TVtb2PDW12F+HheN2sj4lcjYp48bhezkH86fv3r09deL4dC7y8h88eBB+1ujI22xrs7dlYZxwH9r+lFx7UqHsp2PoijIdKoc9D24qn1y'
    $ExitPNG24X24png &= '/zlbuDOlxaWFn06dWf/e6dPVjxqZd4r2p+eeswZ7utLpzs60Hk8kha6bALLRqNfz+UJhdTX79vxC4fMvv+z8P0P/A5IyTXF4aEjtaG5WLV1XvCAAKYPlbDb47fS0H9yRjv8m/wZF7Zsuu2STYgAAAABJRU5ErkJggg=='
    Return Binary(WinAPI_Base64Decode($ExitPNG24X24png))
EndFunc   ;==>Exit24X24png

 

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Link to post
Share on other sites
  • 5 months later...

I'm trying to place some icons to right side of the the menu-bar (below close and other buttons) but setting $top coordinate to zero places it just below it... it seems menu bar not counted as client area?..

also - for some reason in code below pics (jpeg, 24x24) not visible...

#AutoIt3Wrapper_UseX64=Y
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>

#include <GuiMenu.au3>
#include <GDIPlus.au3>

Opt("GUIOnEventMode", 1)

$hDLL_Crypt32 = DllOpen("Crypt32.dll")
$hDLL_ntdll = DllOpen("ntdll.dll")
$hDLL_User32 = DllOpen("user32.dll")


$iWidth = 555
$iIconSize = 24

#Region ### START Koda GUI section ### Form=
Local $Form1 = GUICreate("Form1", $iWidth, 333, (@DesktopWidth - $iWidth)/2, (@DesktopHeight - 333)/2)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")

Global Enum $e_idNew = 1000, $e_idOpen, $e_idSave, $e_idExit, $e_idCut, $e_idCopy, $e_idPaste, $e_idAbout

; Create File menu
$hFile = _GUICtrlMenu_CreateMenu()
_GUICtrlMenu_InsertMenuItem($hFile, 0, "&New", $e_idNew)
_GUICtrlMenu_InsertMenuItem($hFile, 1, "&Open", $e_idOpen)
_GUICtrlMenu_InsertMenuItem($hFile, 2, "&Save", $e_idSave)
_GUICtrlMenu_InsertMenuItem($hFile, 3, "", 0)
_GUICtrlMenu_InsertMenuItem($hFile, 4, "E&xit", $e_idExit)

; Create Edit menu
$hEdit = _GUICtrlMenu_CreateMenu()
_GUICtrlMenu_InsertMenuItem($hEdit, 0, "&Cut", $e_idCut)
_GUICtrlMenu_InsertMenuItem($hEdit, 1, "C&opy", $e_idCopy)
_GUICtrlMenu_InsertMenuItem($hEdit, 2, "&Paste", $e_idPaste)

; Create Help menu
$hHelp = _GUICtrlMenu_CreateMenu()
_GUICtrlMenu_InsertMenuItem($hHelp, 0, "&About", $e_idAbout)

; Create Main menu
$hMain = _GUICtrlMenu_CreateMenu()
_GUICtrlMenu_InsertMenuItem($hMain, 0, "&File", 0, $hFile)
_GUICtrlMenu_InsertMenuItem($hMain, 1, "&Edit", 0, $hEdit)
_GUICtrlMenu_InsertMenuItem($hMain, 2, "&Help", 0, $hHelp)

; Set window menu
_GUICtrlMenu_SetMenu($Form1, $hMain)


Local $Icon1 = GUICtrlCreatePic("", $iWidth - $iIconSize - 8, 0, $iIconSize, $iIconSize)
$Logo1 = _GDIPlus_BitmapCreateFromMemory(_Base64String1(), True)
_WinAPI_DeleteObject(GUICtrlSendMsg($Icon1, $STM_SETIMAGE, $IMAGE_BITMAP, $Logo1))

Local $Icon2 = GUICtrlCreatePic("", $iWidth - 2*$iIconSize-2 - 8, 0, $iIconSize, $iIconSize)
$Logo2 = _GDIPlus_BitmapCreateFromMemory(_Base64String2(), True)
_WinAPI_DeleteObject(GUICtrlSendMsg($Icon2, $STM_SETIMAGE, $IMAGE_BITMAP, $Logo2))

Local $Icon3 = GUICtrlCreatePic("", $iWidth - 3*$iIconSize-4 - 8, 0, $iIconSize, $iIconSize)
$Logo3 = _GDIPlus_BitmapCreateFromMemory(_Base64String3(), True)
_WinAPI_DeleteObject(GUICtrlSendMsg($Icon3, $STM_SETIMAGE, $IMAGE_BITMAP, $Logo3))

GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    Sleep(100)
WEnd

Func Form1Close()
    GUIDelete()
    exit
EndFunc

;==============================================================================================================================================================================================
Func SharpReaderEX_SetIcon($hWnd,$bMemoryBitmap, ByRef $hIcon)
    Local $hBitmap = _GDIPlus_BitmapCreateFromMemory($bMemoryBitmap)
    $hIcon = _GDIPlus_HICONCreateFromBitmap($hBitmap)
    _SendMessageEX($hWnd, 0x0080, 1, $hIcon); 0x0080 = $WM_SETICON, 0 = icon small -> 1 = icon big
    ;_WinAPI_SetClassLongEx($hWnd, $GCL_HICONSM, $hIcon)
    ;_GDIPlus_BitmapDispose($hBitmap)
EndFunc
;==============================================================================================================================================================================================
Func _SendMessageEX($hWnd, $iMsg, $wParam = 0, $lParam = 0, $iReturn = 0, $wParamType = "wparam", $lParamType = "lparam", $sReturnType = "lresult")
    Local $aResult = DllCall($hDLL_User32, $sReturnType, "SendMessageW", "hwnd", $hWnd, "uint", $iMsg, $wParamType, $wParam, $lParamType, $lParam)
    If @error Then Return SetError(@error, @extended, "")
    If $iReturn >= 0 And $iReturn <= 4 Then Return $aResult[$iReturn]
    Return $aResult
EndFunc   ;==>_SendMessage



Func _Base64String1()
    Local $Base64String1
    $Base64String1 &= 'lLIA/9j/4AAQSkYASUYAAQEBAEgBABAA/9sAQwAHQAUGBgYFBwAgCAAIBwkLEgwLCgAKCxcQEQ0SGwAXHBwaFxoZHQAhKiQdHyggGQAaJTIlKCwtLwAwLx0jNDg0LiA3Ki4vLgGIAQgACAgLCgsWDAxAFi4eGh4uLgD/AMIAEQgAGAAYAAMBEQACEQEDEBEB/8QADwEAAwQBAAgAAwACBAYdABkXAMMAxQkABAIBEP/aAAwALwIQAwAQAAAB7eGmBgAhgtmtHS2ehqTzlAA0GxCAHwMJGwABAgMREiIABAUAHAiACwEFAnc7AHeN2Hhg0nb6AAVrQb05Y2KhNAF2AR0RAUSJRQECwBEAEBIhMgIdACoAPwFEEw6WZ0EAMTE84HxkcTGgCW5mE3+AHByAZwYCCzoAYhESIRATBQIdAgEdY220P1AAMxbbbSoBb3wAOCzkYu20rZmgjEWu20+BIBCOIAACABEDITEjsQGEWwY/AjuXuXcANxceZfTISQoAeKBGrkIbUKjAax8gVRc/AnwBloOJEEBZITFBUWEFPgA/IWgIBzNGNQAl+PPuKbAvvgDqnWAPykO9AQDLmXKN7MvSYQDmhD7i4kvLOAYNhVhAUgAAEKb95BQfwBcZEYJjSSjAFwNEF8FGEI6luT4GAK6EmYfjWahDAOZJFkyuhjIHRYFHHYEOAAAHiA4AIhGBJpGxwcZHENgABwIcQYgF0ZUAa6vuQedkPd8AYyQ0YKQ+JAU8MC8CSAAkgBmJNyEAIDFBcVGRxjcQWAAEAHC4EQKsbwDn3eBopdSoOgBHncOhDYW00QCENFDOKKao+gDw1MYyfaBbWwC/OeGGnBZBlADUOmtnMWi5GwDwcA7IBWrV0QBfuf/Z'
    $Base64String1 = _WinAPI_Base64Decode($Base64String1)
    Local $tSource = DllStructCreate('byte[' & BinaryLen($Base64String1) & ']')
    DllStructSetData($tSource, 1, $Base64String1)
    Local $tDecompress
    _WinAPI_LZNTDecompress($tSource, $tDecompress, 837)
    $tSource = 0
    Local Const $bString = Binary(DllStructGetData($tDecompress, 1))
    Return $bString
EndFunc   ;==>_Base64String1

Func _Base64String2()
    Local $Base64String2
    $Base64String2 &= 'srIA/9j/4AAQSkYASUYAAQEBAEgBABAA/9sAQwAHQAUGBgYFBwAgCAAIBwkLEgwLCgAKCxcQEQ0SGwAXHBwaFxoZHQAhKiQdHyggGQAaJTIlKCwtLwAwLx0jNDg0LiA3Ki4vLgGIAQgACAgLCgsWDAxAFi4eGh4uLgD/AMIAEQgAGAAYAAMBEQACEQEDMBEB/8QADwCpAwBBCAAGAwIEBwAZFwcAwwAbCAAEAwIA/wDaAAwDAQACEAADEAAAAWVZUwCjfNOetKtmfADxbWm42kSsymGAHB4QAAIAAIgqAQACAwQABRESExQUIgAgCAArAQUCAJ7QWYNziP8AAFdcjZ15B0MpAPPs9f7BEVwPUEKrJn+AIhuAUgOJikABA4BbBBITAiEBAA0/AWM8z7bKADdPkzqB2LvkAF2JYAIxYvLcoHYxCAqfACAcACBHgSCIYIBDERIhBEICAYEghXlZNRx5kgCOwJx6NfLZXcCuB6IFlu4BPwBiDAEEAB+KHhEhAxMQEjEyQQRiBj8CANKLaeihGO+9ABml0WNuaMTUAE7U2445kOSY0K7NuX0CIRAAS4oRAAEAESFhMUFRAsFFQj8hqCAFeQB9QvbfcfcLfACDjXLkwlVL9wAnQm4JiWgJhQAuWy8Ayj99rQxxP4VegmsQHyFseYEpHRHBF8pawBeAF2EEgZHGSRAcIBYnAJk16lwkAlvHAFDeoyvyCUxXIHBrMrzPQBAZESMCeksoMWEhxkgQSgA47cywMyoxjwCTPkY8m+AwLy1ADR/CNYlXAYEdAGEgUZGhcYGGNhBNAD4rejpVr2RmAK6WFMhdzngpAKUJ7lLfR+PCAFYIQgAZLcRjAFzVMMv5fIeOAAF4CpNNfyuAAKE70KNj8ZdsAFHlMqAg77gOAErZ5hh+A0HuAEMRf//Z'
    $Base64String2 = _WinAPI_Base64Decode($Base64String2)
    Local $tSource = DllStructCreate('byte[' & BinaryLen($Base64String2) & ']')
    DllStructSetData($tSource, 1, $Base64String2)
    Local $tDecompress
    _WinAPI_LZNTDecompress($tSource, $tDecompress, 866)
    $tSource = 0
    Local Const $bString = Binary(DllStructGetData($tDecompress, 1))
    Return $bString
EndFunc   ;==>_Base64String2

Func _Base64String3()
    Local $Base64String3
    $Base64String3 &= 'ybIA/9j/4AAQSkYASUYAAQEBAEgBABAA/9sAQwAHQAUGBgYFBwAgCAAIBwkLEgwLCgAKCxcQEQ0SGwAXHBwaFxoZHQAhKiQdHyggGQAaJTIlKCwtLwAwLx0jNDg0LiA3Ki4vLgGIAQgACAgLCgsWDAxAFi4eGh4uLgD/AMIAEQgAGAAYAAMBEQACEQEDABEB/8QAFwAACAMBAAkAAwQGBSEAGBkBAAIMGQIDgAQFAf/aAAwAFwACEAMQAAABowDJrEdlkUUK0QDrWYnOg1QB0UQ5W4AdGxABgSoDAQgqAQIEExIUIQWAHggAjQEFAtDpANZpo5FoSLp9AGtSfUOfBNFLgFWRVkc4oi+BHw4RAh+JPgBYEiEiMgGCHwMBAT8Bd9oARpaK+0b6J5gAZnY6bTOUgq6q04AcHgBtAwpcAQAHgBIRIxMhYXECHgICAR5777IBnjcA43qIfcXAJjAAcsP7BXqz8lYAvYI9F9kgSpeAZxx6ilW0JwEnDQBkAgAoh2QBABECgBITITEDQWKEZQAGPwLIMkBnLwAvVX7B3UmZ+gCPx9XpU1uy/gCmVj29TiF1mJCGD77UgBIaEMCEAwEAhxIRIQAxcVEBhUQ/IVQTAOA1AJ51ZL2wi0W0AOOoFWv3lUU3ALnnKMsl8dluAEVMTvhWTU/OYPA9KsB3BWECJhDwOYW3H0JNQRdAKwkrIBBxITGBRk0Q0wAHjBSLDV3C+ABeD3aaEvUcsSQUv0AOHxHADQEDAgVKDiFBcbExYQiBkaGGTRBdQBoAxBNDV9WLWRYAsyp3WXMUGrAA+QtlOYNgi3gA7wNi8H1tHsl0QZnAExzAOgFhyToAYCExUWFxgyJBOxAAbKJmcMri9d0A+IOOcabopCkAv9y+SusDbnAAM2lOTW3r3NQADNFTZR6yC4oArUKke+zG+wUAafQ68yEIIgEAO1XP/9k='
    $Base64String3 = _WinAPI_Base64Decode($Base64String3)
    Local $tSource = DllStructCreate('byte[' & BinaryLen($Base64String3) & ']')
    DllStructSetData($tSource, 1, $Base64String3)
    Local $tDecompress
    _WinAPI_LZNTDecompress($tSource, $tDecompress, 875)
    $tSource = 0
    Local Const $bString = Binary(DllStructGetData($tDecompress, 1))
    Return $bString
EndFunc   ;==>_Base64String3

Func _WinAPI_Base64Decode($sB64String)
    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)
    $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

 

Link to post
Share on other sites

You must call _GDIPlus_Startup() before you can use any GDI+ function. ;)

 

Regarding the icon in the menu maybe this will help

 

 

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By CarlD
      List (and, optionally, Delete) 0-byte files in current or specified directory; optionally, recurse through subdirectories.
      The heart of the matter is func _ListZeroByteFiles().
      #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Outfile=ListZero.exe #AutoIt3Wrapper_UseUpx=y #AutoIt3Wrapper_Change2CUI=y #AutoIt3Wrapper_AU3Check_Parameters=-w 3 -w 4 -w 5 -w 6 -d #AutoIt3Wrapper_Run_Au3Stripper=y #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** ; ; List (and, optionally, Delete) Zero-byte Files ; in current|specified directory ; Optionally, recurse through subdirs ; CLD rev. 2021-06-20 ; #cs Usage ----- ListZero d:\path1[ d:\path2 ...] [/R] [/-A] [/V] [/D[R]] /X:exclude_file [/?|/H] d:\path Path(s) to search (at least one is *required*) /R Recurse through subdirectories /-A Omit check for alternative data streams (ADS) /V Verbose: list subdirectory names in addition to files /D Delete listed files (NOT recommended on system drive) /DR Move listed files to Recycle bin /X:exclude_file Exclude files with *extensions* listed in exclude_file (one extension per line) /?|/H Help #ce #include <Misc.au3> #include <WinAPIFiles.au3> Global $sDir = "." Global $bSubDirs = 0, $sMsg = "", $iDeles = 0, $iFiles = 0, $bQuiet = 1 Global $sWinDrive = StringLeft(@WindowsDir, 2), $sTestStr = $sDir Global $vDele = 0, $sDeleWord = "", $sLastWord = "Deleted" Global $sExtFn = "", $aExts, $sExExts = "" Global $bADS = 1, $bNTFS = 0, $iRecurseLimit = 0 ; Test for at least one dir in command Global $p = $CmdLine[0] If $p Then For $i = 1 To $CmdLine[0] If StringInStr($CmdLine[$i], "/") = 1 Then $p -= 1 Next EndIf If $p < 1 Or StringInStr($CmdLineRaw, "/?") Or StringInStr($CmdLineRaw, "/H") Then Exit Consolewrite("List (and, optionally, Delete) Zero-byte Files [CLD rev.2021-02-07]" & @CRLF & @CRLF & StringTrimRight(@ScriptName, 4) & " d:\path1[ d:\path2 ...] [/R] [/-A] [/V] [/D[R]] /X:exclude_file [/?|/H]" & @CRLF & @CRLF & "d:\path Path(s) to search (at least one is *required*)" & @CRLF & "/R Recurse through subdirectories" & @CRLF & "/-A Omit check for alternate data streams (ADS)" & @CRLF & "/V Verbose: list subdirectory names in addition to files" & @CRLF & "/D Delete listed files (NOT recommended on system drive)" & @CRLF & "/DR Move listed files to Recycle bin" & @CRLF & "/X:exclude_file" & @CRLF & " Exclude files with *extensions* listed in exclude_file" & @CRLF & " (one extension per line)" & @CRLF & "/?|/H Help" & @CRLF) If StringInStr($CmdLineRaw, "/R") Then $bSubDirs = 1 If StringInStr($CmdLineRaw, "/-A") Then $bADS = 0 If StringInStr($CmdLineRaw, "/D") Then $vDele = 2 $sDeleWord = "Delet" If StringInStr($CmdLineRaw, "/DR") Then $vDele = 1 $sDeleWord = "Recycl" EndIf $sDeleWord &= "ed ==> " EndIf If StringInStr($CmdLineRaw, "/V") Then $bQuiet = 0 If StringInStr($CmdLineRaw, "/X:") Then $sExtFn = StringTrimLeft($CmdLineRaw, 2 + StringInStr($CmdLineRaw, "/X:")) While StringInStr($sExtFn, " ") = 1 $sExtFn = StringTrimLeft($sExtFn, 1) WEnd If StringInStr($sExtFn, """") = 1 Then $sExtFn = StringTrimLeft($sExtFn, 1) If StringInStr($sExtFn, """") Then $sExtFn = _ StringTrimRight($sExtFn, StringLen($sExtFn) - StringInStr($sExtFn, """")) Else If StringInStr($sExtFn, " ") Then $sExtFn = StringTrimRight($sExtFn, StringLen($sExtFn) - StringInStr($sExtFn, " ")) EndIf If FileExists($sExtFn) Then Global $h1 = FileOpen($sExtFn) $sExExts = FileRead($h1) FileClose($h1) If $sExExts Then If StringInStr($sExExts, @CRLF) Then $aExts = StringSplit($sExExts, @CRLF) $sExExts = "." For $i = 1 To $aExts[0] If $aExts[$i] Then $sExExts &= $aExts[$i] & "." Next Else $sExExts = "." & $sExExts & "." EndIf EndIf EndIf EndIf If $vDele = 2 And StringInStr($CmdLineRaw, $sWinDrive) Then ConsoleWrite("Warning: Deleting zero-byte files in the system drive (" & $sWinDrive & ") is not recommended." & @CRLF & "Are you sure you want to continue? (y|N)" & @CRLF) Global $hDLL = DLLOpen("user32.dll") While 1 If _IsPressed("59", $hDLL) Then ConsoleWrite(@CRLF) ExitLoop ElseIf _IsPressed("1B", $hDLL) Or _IsPressed("4E", $hDLL) Then DLLClose($hDLL) ConsoleWrite(@CRLF & "Quitting..." & @CRLF) Exit Else Sleep(20) EndIf WEnd DLLClose($hDLL) EndIf If $bSubDirs Then ConsoleWrite("Working... (Ctrl+C quits)" & @CRLF) For $i = 1 To $CmdLine[0] If StringInStr($CmdLine[$i], "/") = 1 Then ContinueLoop If $CmdLine[$i - 1] = "/X" Then ContinueLoop If StringRight($CmdLine[$i], 1) <> "\" Then $CmdLine[$i] &= "\" $CmdLine[$i] &= "\" $bNTFS = _SetbNTFS($CmdLine[$i]) $iDeles += _ListZeroByteFiles($CmdLine[$i], $bSubDirs) Next If $vDele = 1 Then $sLastWord = "Recycled" Global $iDiff = 7 + StringLen("Deleted") - StringLen($sLastWord) $sMsg = "Found " & StringFormat("%7s", _IntFormat($iFiles)) & " " & _OneMany("file", $iFiles) & @CRLF & $sLastWord & " " & StringFormat("%" & String($iDiff) & "s", _IntFormat($iDeles)) & " " & _OneMany("file", $iDeles) Exit ConsoleWrite(@CRLF & $sMsg & @CRLF) ;--- Func _ListZeroByteFiles($sPath = ".", $bRecurs = 0) ; List|Delete 0-byte files in current or specified directory ; Optionally, recurse through subdirectories ; Returns number of 0-byte files deleted $iRecurseLimit += 1 If $iRecurseLimit = 200 Then $iRecurseLimit = 0 Return EndIf If StringRight($sPath, 1) <> "\" Then $sPath &= "\" If StringRight($sPath, 1) = "\" Then $sPath &= "*" If Not FileExists($sPath) Then Return 0 Local $sFn = "", $iC = 0, $iC2 = 0, $bEx = 0 Local $sDirName = _FileGetPath($sPath) Local $h = FileFindFirstFile($sPath) If $h = -1 Then Return 0 While 1 $sFn = $sDirName & "\" & FileFindNextFile($h) If @error Then FileClose($h) ExitLoop EndIf $bEx = @extended If StringInStr($sFn, ":") = 2 Then $sFn = StringUpper(StringLeft($sFn, 1)) & StringTrimLeft($sFn, 1) If $bEx = 0 Then; we have a file If _FileGetSizeADS($sFn) = 0 Then If $sExExts Then If StringInStr($sExExts, "." & _FileGetExt($sFn) & ".") Then ContinueLoop EndIf $iFiles += 1 Switch $vDele Case 0 Case 1 If FileRecycle($sFn) Then $iC += 1 Case 2 If FileDelete($sFn) Then $iC += 1 EndSwitch ConsoleWrite($sDeleWord & $sFn & @CRLF) EndIf Else; we have a directory If $bRecurs Then If $bQuiet = 0 Then ConsoleWrite("Searching " & $sFn & @CRLF) $iC2 = _ListZeroByteFiles($sFn, 1) If $iC2 > 0 Then $iC += $iC2 $iC2 = 0 EndIf EndIf WEnd Return $iC EndFunc ;==>_ListZeroByteFiles Func _FileGetExt($sFn) ; Parse ext from [d:\path\]filename.ext Local $sExt = "", $aA If StringInStr($sFn, ".") Then If StringInStr(FileGetAttrib($sFn), "D") Then Return $sExt $aA = StringSplit($sFn, ".") $sExt = $aA[$aA[0]] EndIf Return $sExt EndFunc ;==>_FileGetExt Func _FileGetPath($sFn) ; Parse directory from path\file; final "\" is trimmed Local $sDirr = "" Local $aA = StringSplit($sFn, "\") Local $iS = $aA[0] - 1 If Not StringInStr(FileGetAttrib($aA[$aA[0]]), "D") Then $iS += 1 For $i = 1 To $iS $sDirr &= $aA[$i] & "\" Next While StringRight($sDirr, 1) = "\" $sDirr = StringTrimRight($sDirr, 1) WEnd Return $sDirr EndFunc ;==>_FileGetPath Func _FileGetSizeADS($sFile) Local $sErrW, $sFnTmp, $aFnTmp Local $iSize = FileGetSize($sFile) If Not ($bADS And $bNTFS) Then Return $iSize $iSize = 0 Local $pData = _WinAPI_CreateBuffer(1024) Local $tFSD = DllStructCreate($tagWIN32_FIND_STREAM_DATA) Local $hSearch = _WinAPI_FindFirstStream($sFile, $tFSD) While Not @error $iSize += DllStructGetData($tFSD, 'StreamSize') _WinAPI_FindNextStream($hSearch, $tFSD) WEnd Switch @extended Case 38 ; ERROR_HANDLE_EOF Case Else $sErrW = _WinAPI_GetErrorMessage(@extended) $aFnTmp = StringSplit($sFile, "\") $sFnTmp = $aFnTmp[$aFnTmp[0]] If Not StringRight($sErrW, 13) = "successfully." Then _ ConsoleWrite("--> " & $sFnTmp & ": " & $sErrW & @CRLF) EndSwitch _WinAPI_FindClose($hSearch) _WinAPI_FreeMemory($pData) Return $iSize EndFunc ;==>_FileGetSizeADS Func _IntFormat($n, $s = ",", $sd = ".") ; Insert commas|specified separator into integer If StringIsInt($n) Then Local $a, $d = "", $x If StringInStr($n, $sd) Then $a = StringSplit($n, $sd) $n = $a[1] $d = $sd & $a[2] EndIf $x = $n $n = "" While StringLen($x) > 3 $n = $s & StringRight($x, 3) & $n $x = StringTrimRight($x, 3) WEnd $n = $x & $n EndIf Return ($n & $d) EndFunc ;==>_IntFormat Func _OneMany($sSingular, $iCount, $sPlural = "") ; Returns singular or plural depending on count ; Plural appends S to singular (ES if it ends in S) ; unless $sPlural is supplied Local $sEss = "s" If StringRight($sSingular, 1) = "s" Then $sEss = "es" If StringUpper($sSingular) == $sSingular Then $sEss = StringUpper($sEss) If Not $sPlural Then $sPlural = $sSingular & $sEss If Abs($iCount) = 1 Then Return $sSingular Else Return $sPlural EndIf EndFunc ;==>_OneMany Func _SetbNTFS($sPath) If DriveGetFileSystem(StringLeft($sPath, 3)) = "NTFS" Then Return 1 Else Return 0 EndIf EndFunc ;==>_SetbNTFS  
    • By lIlIIlIllIIIIlI
      $input = $CmdLine[1] $bytes = 1000000 ; 1000000 for 1 MB, 1000 for 1 KB $size = FileGetSize($input) $file = fileopen($input, 16) $max = ceiling($size / $bytes) for $i = 1 to $max $data = fileread($file, $bytes) $output = $input & '_' & $i & 'of' & $max filewrite($output, $data) next ^file split
      file path for a 20MB "video.mp4" is input, it will be output as "video.mp4_1of20", "video.mp4_2of20", etc. change $bytes to affect the split files size, this example made them 1MB (10^6 bytes)
       
      $input = $CmdLine[1] $name = stringtrimright($input, 1 + stringlen($input) - stringinstr($input, '_', 0, -1)) $split = stringsplit($input, 'of', 3) $max = $split[ubound($split) - 1] for $i = 1 to $max $in = $name & '_' & $i & 'of' & $max $file = fileopen($in, 16) $data = fileread($file) fileclose($file) filedelete($in) filewrite($name, $data) next ^ file join
      file path for any of the "video.mp4_Xof20" segments is input. the "video.mp4_Xof20" segments are read and written to "video.mp4" and then deleted, leaving the newly joined "video.mp4" in the end
       
      i made this today because i had a big file that i couldn't really open. i split it into 1000 chunks to make processing and stuff easier. i've also used it to split files to just under 25MB segments so i can attach and mail big files over gmail which is silly but it worked
    • By Synaps3
      This script will make it so you can press Alt + "+" in Windows Explorer to select all files with the current file extension. This is something that I wanted for a long time and it should be a feature in Windows, but it's not. The only way to get close is to use the search thing (but then it shows the results excluding everything else) or to group by that type, but I don't want it grouped.
      You can press Alt + Enter right after to open properties on those files or you can press delete to delete only files of that type.
      You need the "Automating Windows Explorer" pack here: https://www.autoitscript.com/forum/topic/162905-automating-windows-explorer/
       
      #include "Includes\AutomatingWindowsExplorer.au3" #include <Array.au3> Opt( "MustDeclareVars", 1 ) HotKeySet("!=", "SelectTypes") Func SelectTypes() ; Windows Explorer on XP, Vista, 7, 8 Local $hExplorer = WinGetHandle("[REGEXPCLASS:^(Cabinet|Explore)WClass$]") If Not $hExplorer Then MsgBox(0, "Explorer", "Could not find Windows Explorer.") Return EndIf $hExplorer = WinActive("[REGEXPCLASS:^(Cabinet|Explore)WClass$]") If Not $hExplorer Then MsgBox(0, "Explorer", "Windows Explorer is not in focus.") Return EndIf ; Get an IShellBrowser interface GetIShellBrowser($hExplorer) If Not IsObj($oIShellBrowser) Then MsgBox(0, "Explorer", "Could not get an IShellBrowser interface.") Return EndIf ; Get other interfaces GetShellInterfaces() ; Get selected files with full path ;GetFiles( $fSelected = False, $fFullPath = False, $fPidl = False, $iMax = 0 ) Local $aAllFiles = GetItems(False, False) Local $aFiles = GetItems(True, False) Local $sExt Local $i If UBound($aFiles) = 1 Then ;MsgBox(0, "Selected", $aFiles[0]) $sExt = StringRight($aFiles[0], StringLen($aFiles[0]) - StringInStr($aFiles[0], ".", 0, -1)) ;MsgBox(0, "Selected", $sExt) For $i = 0 To UBound($aAllFiles) - 1 If StringInStr($aAllFiles[$i], ".") > 0 Then If StringRight($aAllFiles[$i], StringLen($aAllFiles[$i]) - StringInStr($aAllFiles[$i], ".", 0, -1)) = $sExt Then SetSelectedItem($i) EndIf EndIf Next Else MsgBox($MB_ICONWARNING, "Error", "None or multiple items selected!") EndIf EndFunc While 1 GUIGetMsg() Wend  
    • By amosrinat
      Hi,
      i have an AutoIT script that sends emails with two embedded images.
      When users get the email they don't see the images. How should I fix my code?
      Thank you for your support,
      Amos
      Func fSendMail() $TemplateName = StringRegExpReplace($Template, "^.*\\|\..*$", "") $SmtpServer = "smtp.**.com" $FromName = "do-not-reply@*********" $FromAddress = "do-not-reply@******" $ToAddress = $MG1_Mgr & ";"& $Owner $Subject = "ACTION REQUIRED - " & $TemplateName $Body = $sBody5 $IPPort = 25 $ssl = 0 Global $oMyRet[2] Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc") $rc = fINetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $IPPort, $ssl) If @error Then MyErrFunc() EndIf EndFunc;fSendMail Func fINetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $IPPort = 25, $ssl = 0) Local $objEmail = ObjCreate("CDO.Message") $objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>' $objEmail.To = $s_ToAddress Local $i_Error = 0 Local $i_Error_desciption = "" $objEmail.Subject = $s_Subject If StringInStr($as_Body, "<") And StringInStr($as_Body, ">") Then $objEmail.HTMLBody = $as_Body Else $objEmail.Textbody = $as_Body & @CRLF EndIf $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer If Number($IPPort) = 0 Then $IPPort = 25 $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort $objEmail.Configuration.Fields.Update $objEmail.Fields.Update ;$objEmail.Send **************** If @error Then MyErrFunc() EndIf $objEmail = "" EndFunc;fINetSmtpMailCom  
    • By matwachich
      AutoIt3 Lua Wrapper
      This is an AutoIt3 wrapper for the Lua scripting language. Consider it beta software, but since I will be using it in commercial product, expect it to evolve.
      It has been developped with Lua 5.3.5. Updates will come for new Lua version.
      Everything works just fine, except one (big) limitation: Anything that throws a Lua error (using C setjmp/longjmp functionality) will crash your AutoIt program. That means that it is impossible to use throw errors from an AutoIt function called by Lua (luaL_check*, lua_error...).
      It is hosted in Github: https://github.com/matwachich/au3lua
      Simple example
      #include <lua.au3> #include <lua_dlls.au3> ; Initialize library _lua_Startup(_lua_ExtractDll()) OnAutoItExitRegister(_lua_Shutdown) ; create new execution state $pState = _luaL_newState() _luaopen_base($pState) ; needed for the lua's print function $iRet = _luaL_doString($pState, 'print("Hello, world!")') If $iRet <> $LUA_OK Then ; read the error description on top of the stack ConsoleWrite("!> Error: " & _lua_toString($pState, -1) & @CRLF) Exit EndIf ; close the state to free memory (you MUST call this function, this is not AutoIt's automatic memory management, it's a C library) _lua_close($pState)
×
×
  • Create New...