Jump to content

PlayHD

Active Members
  • Posts

    148
  • Joined

  • Last visited

Reputation Activity

  1. Like
    PlayHD got a reaction from antonioj84 in GUI design concepts.   
    One of my old projects...


    #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <WinApi.au3> Global $RBOX_EVENT_CLOSE = 1 Global $ROUNDES = 20, $LastHwnd = 0 Global $GUIBKCOLOR = 0xEEC591 Global $ARRAY_COLOR_TOP_MIN[3] = [36 ,65 ,142] , $ARRAY_COLOR_TOP_MAX[3] = [11 ,42 ,122] Local $hGui = RBoxCreate("Gui Design PHD",800,600) While 1 CheckX($hGui,$RBOX_EVENT_CLOSE,"GuiCtrlSetColor("&$RBOX_EVENT_CLOSE&",0xA3A3A3)","GuiCtrlSetColor("&$RBOX_EVENT_CLOSE&",0x555555)") $gMsg = GUIGetMsg() Switch $gMsg Case $RBOX_EVENT_CLOSE, $GUI_EVENT_CLOSE Exit EndSwitch WEnd Func RBoxCreate($Title,$width, $height ,$left=-1 ,$top=-1 ,$show=1) Local $GUI = GUICreate($Title,$width,$height,$left,$top,$WS_POPUP) GUISetBkColor($GUIBKCOLOR,$GUI) _GuiRoundCorners($GUI,0,0,$ROUNDES,$ROUNDES) $RBOX_EVENT_CLOSE = GUICtrlCreateLabel('X',$width-20,3,25,25) GUICtrlSetCursor($RBOX_EVENT_CLOSE,0) GUICtrlSetBkColor($RBOX_EVENT_CLOSE,-2) GUICtrlSetFont($RBOX_EVENT_CLOSE,15,800) GUICtrlSetColor($RBOX_EVENT_CLOSE,0x555555) $Title &= " " Local $hTitle = GUICtrlCreateLabel($Title,0,0,$width-20,26,$SS_CENTER,$GUI_WS_EX_PARENTDRAG) GUICtrlSetFont($hTitle,17,400,0,"Consolas") GUICtrlSetBkColor($hTitle,-2) Local $Graphic = GUICtrlCreateGraphic (0,0, $width, 25) GUICtrlSetState($Graphic,$Gui_DISABLE) GradientFill($Graphic, 0, 0, $width, 25, $ARRAY_COLOR_TOP_MIN, $ARRAY_COLOR_TOP_MAX) If $show = 1 Then GUISetState(@SW_SHOW,$GUI) Return $GUI EndFunc Func CheckX($hGui, $CtrlID, $sCMD, $eCMD) Local $cGui = GUIGetCursorInfo($hGui) If Not IsArray($cGui) Then Return 0 if $LastHwnd <> $cGui[4] And $cGui[4] = $CtrlID Then Return Execute($sCMD) + Assign("LastHwnd",$cGui[4]) if $LastHwnd <> $cGui[4] Then Return Execute($eCMD) + Assign("LastHwnd",$cGui[4]) EndFunc Func _GuiRoundCorners($h_win, $i_x1, $i_y1, $i_x3, $i_y3) Dim $pos, $ret, $ret2 $pos = WinGetPos($h_win) $ret = DllCall("gdi32.dll", "long", "CreateRoundRectRgn", "long", $i_x1, "long", $i_y1, "long", $pos[2], "long", $pos[3], "long", $i_x3, "long", $i_y3) If $ret[0] Then $ret2 = DllCall("user32.dll", "long", "SetWindowRgn", "hwnd", $h_win, "long", $ret[0], "int", 1) If $ret2[0] Then Return 1 Else Return 0 EndIf Else Return 0 EndIf EndFunc Func GradientFill($im, $x1, $y1, $width, $height, $left_color, $right_color) Local $color0=($left_color[0]-$right_color[0])/$height Local $color1=($left_color[1]-$right_color[1])/$height $color2=($left_color[2]-$right_color[2])/$height For $Y=0 to $height-1 $red=$left_color[0]-floor($Y*$color0) $green=$left_color[1]-floor($Y*$color1) $blue=$left_color[2]-floor($Y*$color2) $col = Dec(Hex($blue,2) & Hex($green,2) & Hex($red,2)) GUICtrlSetGraphic($im,$GUI_GR_COLOR, $col) GUICtrlSetGraphic($im,$GUI_GR_MOVE,0,$Y) GUICtrlSetGraphic($im,$GUI_GR_LINE,$width,$Y) Next GUICtrlSetGraphic($im,$GUI_GR_COLOR, 0x000000) GUICtrlSetGraphic($im,$GUI_GR_MOVE,0,$height) GUICtrlSetGraphic($im,$GUI_GR_LINE,$width,$height) GUICtrlSetGraphic($im,$GUI_GR_REFRESH) EndFunc

    Here is a screen : http://prntscr.com/ni5sq
  2. Like
    PlayHD got a reaction from kcvinu in GUI design concepts.   
    One of my old projects...


    #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <WinApi.au3> Global $RBOX_EVENT_CLOSE = 1 Global $ROUNDES = 20, $LastHwnd = 0 Global $GUIBKCOLOR = 0xEEC591 Global $ARRAY_COLOR_TOP_MIN[3] = [36 ,65 ,142] , $ARRAY_COLOR_TOP_MAX[3] = [11 ,42 ,122] Local $hGui = RBoxCreate("Gui Design PHD",800,600) While 1 CheckX($hGui,$RBOX_EVENT_CLOSE,"GuiCtrlSetColor("&$RBOX_EVENT_CLOSE&",0xA3A3A3)","GuiCtrlSetColor("&$RBOX_EVENT_CLOSE&",0x555555)") $gMsg = GUIGetMsg() Switch $gMsg Case $RBOX_EVENT_CLOSE, $GUI_EVENT_CLOSE Exit EndSwitch WEnd Func RBoxCreate($Title,$width, $height ,$left=-1 ,$top=-1 ,$show=1) Local $GUI = GUICreate($Title,$width,$height,$left,$top,$WS_POPUP) GUISetBkColor($GUIBKCOLOR,$GUI) _GuiRoundCorners($GUI,0,0,$ROUNDES,$ROUNDES) $RBOX_EVENT_CLOSE = GUICtrlCreateLabel('X',$width-20,3,25,25) GUICtrlSetCursor($RBOX_EVENT_CLOSE,0) GUICtrlSetBkColor($RBOX_EVENT_CLOSE,-2) GUICtrlSetFont($RBOX_EVENT_CLOSE,15,800) GUICtrlSetColor($RBOX_EVENT_CLOSE,0x555555) $Title &= " " Local $hTitle = GUICtrlCreateLabel($Title,0,0,$width-20,26,$SS_CENTER,$GUI_WS_EX_PARENTDRAG) GUICtrlSetFont($hTitle,17,400,0,"Consolas") GUICtrlSetBkColor($hTitle,-2) Local $Graphic = GUICtrlCreateGraphic (0,0, $width, 25) GUICtrlSetState($Graphic,$Gui_DISABLE) GradientFill($Graphic, 0, 0, $width, 25, $ARRAY_COLOR_TOP_MIN, $ARRAY_COLOR_TOP_MAX) If $show = 1 Then GUISetState(@SW_SHOW,$GUI) Return $GUI EndFunc Func CheckX($hGui, $CtrlID, $sCMD, $eCMD) Local $cGui = GUIGetCursorInfo($hGui) If Not IsArray($cGui) Then Return 0 if $LastHwnd <> $cGui[4] And $cGui[4] = $CtrlID Then Return Execute($sCMD) + Assign("LastHwnd",$cGui[4]) if $LastHwnd <> $cGui[4] Then Return Execute($eCMD) + Assign("LastHwnd",$cGui[4]) EndFunc Func _GuiRoundCorners($h_win, $i_x1, $i_y1, $i_x3, $i_y3) Dim $pos, $ret, $ret2 $pos = WinGetPos($h_win) $ret = DllCall("gdi32.dll", "long", "CreateRoundRectRgn", "long", $i_x1, "long", $i_y1, "long", $pos[2], "long", $pos[3], "long", $i_x3, "long", $i_y3) If $ret[0] Then $ret2 = DllCall("user32.dll", "long", "SetWindowRgn", "hwnd", $h_win, "long", $ret[0], "int", 1) If $ret2[0] Then Return 1 Else Return 0 EndIf Else Return 0 EndIf EndFunc Func GradientFill($im, $x1, $y1, $width, $height, $left_color, $right_color) Local $color0=($left_color[0]-$right_color[0])/$height Local $color1=($left_color[1]-$right_color[1])/$height $color2=($left_color[2]-$right_color[2])/$height For $Y=0 to $height-1 $red=$left_color[0]-floor($Y*$color0) $green=$left_color[1]-floor($Y*$color1) $blue=$left_color[2]-floor($Y*$color2) $col = Dec(Hex($blue,2) & Hex($green,2) & Hex($red,2)) GUICtrlSetGraphic($im,$GUI_GR_COLOR, $col) GUICtrlSetGraphic($im,$GUI_GR_MOVE,0,$Y) GUICtrlSetGraphic($im,$GUI_GR_LINE,$width,$Y) Next GUICtrlSetGraphic($im,$GUI_GR_COLOR, 0x000000) GUICtrlSetGraphic($im,$GUI_GR_MOVE,0,$height) GUICtrlSetGraphic($im,$GUI_GR_LINE,$width,$height) GUICtrlSetGraphic($im,$GUI_GR_REFRESH) EndFunc

    Here is a screen : http://prntscr.com/ni5sq
  3. Like
    PlayHD got a reaction from coffeeturtle in GUI design concepts.   
    One of my old projects...


    #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <WinApi.au3> Global $RBOX_EVENT_CLOSE = 1 Global $ROUNDES = 20, $LastHwnd = 0 Global $GUIBKCOLOR = 0xEEC591 Global $ARRAY_COLOR_TOP_MIN[3] = [36 ,65 ,142] , $ARRAY_COLOR_TOP_MAX[3] = [11 ,42 ,122] Local $hGui = RBoxCreate("Gui Design PHD",800,600) While 1 CheckX($hGui,$RBOX_EVENT_CLOSE,"GuiCtrlSetColor("&$RBOX_EVENT_CLOSE&",0xA3A3A3)","GuiCtrlSetColor("&$RBOX_EVENT_CLOSE&",0x555555)") $gMsg = GUIGetMsg() Switch $gMsg Case $RBOX_EVENT_CLOSE, $GUI_EVENT_CLOSE Exit EndSwitch WEnd Func RBoxCreate($Title,$width, $height ,$left=-1 ,$top=-1 ,$show=1) Local $GUI = GUICreate($Title,$width,$height,$left,$top,$WS_POPUP) GUISetBkColor($GUIBKCOLOR,$GUI) _GuiRoundCorners($GUI,0,0,$ROUNDES,$ROUNDES) $RBOX_EVENT_CLOSE = GUICtrlCreateLabel('X',$width-20,3,25,25) GUICtrlSetCursor($RBOX_EVENT_CLOSE,0) GUICtrlSetBkColor($RBOX_EVENT_CLOSE,-2) GUICtrlSetFont($RBOX_EVENT_CLOSE,15,800) GUICtrlSetColor($RBOX_EVENT_CLOSE,0x555555) $Title &= " " Local $hTitle = GUICtrlCreateLabel($Title,0,0,$width-20,26,$SS_CENTER,$GUI_WS_EX_PARENTDRAG) GUICtrlSetFont($hTitle,17,400,0,"Consolas") GUICtrlSetBkColor($hTitle,-2) Local $Graphic = GUICtrlCreateGraphic (0,0, $width, 25) GUICtrlSetState($Graphic,$Gui_DISABLE) GradientFill($Graphic, 0, 0, $width, 25, $ARRAY_COLOR_TOP_MIN, $ARRAY_COLOR_TOP_MAX) If $show = 1 Then GUISetState(@SW_SHOW,$GUI) Return $GUI EndFunc Func CheckX($hGui, $CtrlID, $sCMD, $eCMD) Local $cGui = GUIGetCursorInfo($hGui) If Not IsArray($cGui) Then Return 0 if $LastHwnd <> $cGui[4] And $cGui[4] = $CtrlID Then Return Execute($sCMD) + Assign("LastHwnd",$cGui[4]) if $LastHwnd <> $cGui[4] Then Return Execute($eCMD) + Assign("LastHwnd",$cGui[4]) EndFunc Func _GuiRoundCorners($h_win, $i_x1, $i_y1, $i_x3, $i_y3) Dim $pos, $ret, $ret2 $pos = WinGetPos($h_win) $ret = DllCall("gdi32.dll", "long", "CreateRoundRectRgn", "long", $i_x1, "long", $i_y1, "long", $pos[2], "long", $pos[3], "long", $i_x3, "long", $i_y3) If $ret[0] Then $ret2 = DllCall("user32.dll", "long", "SetWindowRgn", "hwnd", $h_win, "long", $ret[0], "int", 1) If $ret2[0] Then Return 1 Else Return 0 EndIf Else Return 0 EndIf EndFunc Func GradientFill($im, $x1, $y1, $width, $height, $left_color, $right_color) Local $color0=($left_color[0]-$right_color[0])/$height Local $color1=($left_color[1]-$right_color[1])/$height $color2=($left_color[2]-$right_color[2])/$height For $Y=0 to $height-1 $red=$left_color[0]-floor($Y*$color0) $green=$left_color[1]-floor($Y*$color1) $blue=$left_color[2]-floor($Y*$color2) $col = Dec(Hex($blue,2) & Hex($green,2) & Hex($red,2)) GUICtrlSetGraphic($im,$GUI_GR_COLOR, $col) GUICtrlSetGraphic($im,$GUI_GR_MOVE,0,$Y) GUICtrlSetGraphic($im,$GUI_GR_LINE,$width,$Y) Next GUICtrlSetGraphic($im,$GUI_GR_COLOR, 0x000000) GUICtrlSetGraphic($im,$GUI_GR_MOVE,0,$height) GUICtrlSetGraphic($im,$GUI_GR_LINE,$width,$height) GUICtrlSetGraphic($im,$GUI_GR_REFRESH) EndFunc

    Here is a screen : http://prntscr.com/ni5sq
  4. Like
    PlayHD reacted to wakillon in Calculate Pi   
    As AutoIt is limited with a 15 digits precision, ACos(-1) stay sufficient ! 
  5. Like
    PlayHD reacted to Jon in AutoIt v3.3.12.0 Released   
    AutoIt v3.3.12.0 has been released.
    Thanks to everyone involved - there's been a lot of effort in the help file, UDF library and build scripts by many under-appreciated individuals.
    Download it here.
    Complete list of changes: History
  6. Like
    PlayHD reacted to wakillon in ImageSplitter v1.0.0.7 Update of 26 March 2014 (Multi Images Split allowed)   
    ImageSplitter v1.0.0.7

     
    ImageSplitter split an image into pieces that can be used
    - for collage art.
    - for website optimisation (speed up the preview of images)
    - for printing purposes (big poster)
    - for create a puzzle.
     
    Load an image by menu or by drag&drop (jpg, gif, png and bmp are supported)
    Choose a format and select Columns and Rows numbers you want.
    Once Split Image processing is finished a folder with all splitted image parts will be opened.
    Parts of image are from left to right and from top to bottom.
    Button was made online with chimply.com the easy and free buttons generator !
    ChangeLog version 1.0.0.7 :
    DPI Resolution can be preserved as original or changed.
    Multi files Split is now possible ( Only by Menu - Open - Multi files Split)
    previous downloads : 189
    ImageSplitter v1.0.0.7.au3 is available in the Download Section
     
    Hope you like it ! 
  7. Like
    PlayHD reacted to BrewManNH in Invisble or Borderless Button   
    Labels work identically to buttons as far as being an actionable control. The only difference is that the label doesn't look like a button when it's clicked.
    #include <GUIConstantsEx.au3> Example() Func Example() Local $widthCell, $msg, $iOldOpt GUICreate("My GUI") ; will create a dialog box that when displayed is centered GUISetHelp("notepad.exe") ; will run notepad if F1 is typed $label = GUICtrlCreateLabel("CLICK ME", 10, 30) GUICtrlSetBkColor(-1, 0x000000) GUICtrlSetColor(-1, 0xffffff) GUISetState() ; will display an empty dialog box ; Run the GUI until the dialog is closed While 1 $msg = GUIGetMsg() Switch $msg Case $GUI_EVENT_CLOSE ExitLoop case $label Run("notepad.exe") EndSwitch WEnd $iOldOpt = Opt("GUICoordMode", $iOldOpt) EndFunc ;==>Example
  8. Like
    PlayHD got a reaction from 0xdefea7 in Read value from ListView on mouse click   
    Something like this ?
    #include <GuiConstantsEx.au3> #include <File.au3> #include <Array.au3> #include <ListviewConstants.au3> #include <GuiListView.au3> Local $FileList ;declare variables here, not in a loop Local $DataReadFromList $GUI = GUICreate("Automation", 300, 500) ;is good to save the window handle $mylist = GUICtrlCreateList("", 10, 60, 280, 100) $add = GUICtrlCreateButton("Add", 10, 35, 75, 20) GUISetState(@SW_SHOW,$GUI) ;;;; While 1 $msg = GUIGetMsg() Switch $msg Case $add _FileReadToArray("C:\Users\Danny Tan\Desktop\test.txt", $FileList) If @error Then ContinueLoop ;if file not found do something (else the program will generate error) For $i = 1 To $FileList[0] GUICtrlSetData($mylist, $FileList[$i]) Next Case $mylist ;if select a item from list do stuff $DataReadFromList = GUICtrlRead($mylist) MsgBox(0,0,$DataReadFromList) Case $GUI_EVENT_CLOSE ExitLoop EndSwitch WEnd
  9. Like
    PlayHD got a reaction from dannydy in Read value from ListView on mouse click   
    Something like this ?
    #include <GuiConstantsEx.au3> #include <File.au3> #include <Array.au3> #include <ListviewConstants.au3> #include <GuiListView.au3> Local $FileList ;declare variables here, not in a loop Local $DataReadFromList $GUI = GUICreate("Automation", 300, 500) ;is good to save the window handle $mylist = GUICtrlCreateList("", 10, 60, 280, 100) $add = GUICtrlCreateButton("Add", 10, 35, 75, 20) GUISetState(@SW_SHOW,$GUI) ;;;; While 1 $msg = GUIGetMsg() Switch $msg Case $add _FileReadToArray("C:\Users\Danny Tan\Desktop\test.txt", $FileList) If @error Then ContinueLoop ;if file not found do something (else the program will generate error) For $i = 1 To $FileList[0] GUICtrlSetData($mylist, $FileList[$i]) Next Case $mylist ;if select a item from list do stuff $DataReadFromList = GUICtrlRead($mylist) MsgBox(0,0,$DataReadFromList) Case $GUI_EVENT_CLOSE ExitLoop EndSwitch WEnd
  10. Like
    PlayHD reacted to wakillon in Polaroider v1.0.3.1 Update of 03 july 2013   
    Polaroider 1.0.3.1
    Easily Create a picture as a Polaroid and be able after, to create Custom Photos Polaroid Collage.
    May be you know Pola a soft for create easily Polaroid-like photos from your digital images, but after some tries, i didn't find it very handy !
    So i made mine.
     

    Photo can be positioned by drag and zoomed/unzoomed with mouse wheel ( sorry for Touchpad user    )
    Polaroid can be inclined 10 or 20 degrees, on left or right, and with simple or multiple frames.
    Inclination will only be visible on the saved shoot.
    It is also saved with a transparent background for be able to create "Pêle-Mêles" (in french) with a photo editor.
    I have set the desktop as save directory.
    previous downloads : 122
     
    source and executable are available in the Download Section
    All files are included in script.
    I hope you will like it !
    Happy Shooting ! 
  11. Like
    PlayHD reacted to MrCreatoR in GUICtrlSetOnHover UDF!   
    Ok, here is what i came up with after 3-4 hours of scripting well ok, it has been long time since then, so... after an year or so of hard scripting/testing!!!
    (inspired by this topic)...

    GUICtrlSetOnHover UDF...

    Syntax:

    _GUICtrl_OnHoverRegister(ControlID [, OnHoverFunc [, OnLeaveHoverFunc [, PrimaryDownFunc [, PrimaryUpFunc [, KeepCall_PrDn_Func [, KeepCall_Hover_Func]]]]]])
    ControlID can be -1 as in Build-In functions!


    Example:


    #include "GUICtrlOnHover.au3" Opt("GUIOnEventMode", 1) $Btn_Color = 0x7A9DD8 $Hover_Color = 0xFF0000 ;0x7AC5D8 $GUIMain = GUICreate("Letters Hovering Example", 570, 200) GUISetOnEvent(-3, "Quit") _CreateLetters_Proc(10, 60, 18, 20) GUICtrlCreateButton("Close", 30, 120, 100, 30) GUICtrlSetOnEvent(-1, "Quit") GUICtrlSetFont(GUICtrlCreateLabel("Letter: ", 35, 170, 200, 20), 9, 800) $Status_Label = GUICtrlCreateLabel("", 80, 171, 200, 20) GUICtrlSetColor(-1, 0xFF0000) GUICtrlSetFont(-1, 8.5, 800) GUISetState() While 1 Sleep(100) WEnd Func _CreateLetters_Proc($iLeft, $Top, $Width=15, $Height=15) Local $iLeft_Begin = $iLeft Local $iAsc_Char = 64 For $i = 0 To 25 $iLeft_Begin += 20 $iAsc_Char += 1 GUICtrlCreateButton(Chr($iAsc_Char), $iLeft_Begin, $Top, $Width, $Height) _GUICtrl_OnHoverRegister(-1, "_Hover_Func", "_Leave_Hover_Func") GUICtrlSetOnEvent(-1, "_Letter_Events") GUICtrlSetBkColor(-1, $Btn_Color) GUICtrlSetFont(-1, 6) Next EndFunc Func _Letter_Events() MsgBox(64, "Pressed", "Letter = " & GUICtrlRead(@GUI_CtrlId)) EndFunc Func _Hover_Func($iCtrlID) GUICtrlSetBkColor($iCtrlID, $Hover_Color) GUICtrlSetData($Status_Label, GUICtrlRead($iCtrlID)) Beep(1000, 20) EndFunc Func _Leave_Hover_Func($iCtrlID) GUICtrlSetBkColor($iCtrlID, $Btn_Color) GUICtrlSetData($Status_Label, "") EndFunc Func Quit() Exit EndFunc

    Attachments:
    [The archive include few nice examples, and the UDF itself of course .]

    * New (v2.1) (Redirection to Zip-file, 159 kb) _GUICtrlSetOnHover.html

    GUICtrlSetOnHover.zip
    GUICtrlSetOnHover_UDF.au3
    GuiCtrlSetOnHover.zip
    GUICtrlSetOnHover_UDF_For_3.2.10.0.au3
    Old Beta - GUICtrlSetOnHover_UDF_beta.zip

    Enjoy!

    P.S
    Thanks to piccaso for the greatest CallBack tool! Without it, this UDF would never been created!

    ============================================

    History version:




  12. Like
    PlayHD reacted to FireFox in Good coding practices in AutoIt   
    @PlayHD
    Why? By declaring your variables you define their scope, and the compiler (at least the executable interpreter) has not to do the job for you.
  13. Like
    PlayHD reacted to Melba23 in Inputbox focus/not focus   
    Terenz,

    Perhaps like this:
    #include <GUIConstantsEx.au3> #include <WinAPI.au3> Global $aInput[2] $hGUI = GUICreate("Test", 500, 500) $aInput[0] = GUICtrlCreateInput("Some text 1", 10, 10, 200, 20) $aInput[1] = GUICtrlCreateInput("Some text 2", 10, 40, 200, 20) GUISetState() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit Case $GUI_EVENT_PRIMARYUP For $i = 0 To UBound($aInput) - 1 If _WinAPI_GetFocus() = GUICtrlGetHandle($aInput[$i]) Then GUICtrlSetData($aInput[$i], "") ExitLoop EndIf Next EndSwitch WEnd Any use?
    M23
  14. Like
    PlayHD reacted to JLogan3o13 in GUI Testing   
    With AutoIt (almost) all things are possible. What is the name of the application you are trying to automate? Try the AutoIt Window Info Tool (AU3Info.exe in the AutoIt install directory) on the program's window and let us know what you come up with.
  15. Like
    PlayHD reacted to Yashied in Package UDF   
    LAST VERSION - 1.0
    22-Mar-12

    I think many of you would like to combine any data of your project, for example skin images, into a single file (package), and as necessary extract them from it. Moreover, it would be better to avoid creating temporary files on the disk. Yes, of course, you can use a resources of the executable file or native FileInstall() function, but in the first case you can not add data after compilation the script, the second case leads inevitably to write data to disk that is not good. Alternatively, you can use, for example, .zip archives, but here again you are limited to using only the files. For this reason, I decided to invent their own file format (.pkr) for storing any data (it can be a files or a memory data directly), and devoid of all the above shortcomings. Below is the detailed structure of the .pkr file (package).





    As you can see from the screenshot, the package consists of a header and one or more data packets following one another. The package header has a length of 256 bytes and represents PKHEADER structure that contains a basic information about .pkr file, including a short text comment. Here is a description of the PKHEADER structure.
     

    -------------------------------------------------------------------------------------------------- | PKHEADER | |--------------------------------------------------------------------------------------------------| | Offset | Length | Purpose | |--------|--------|--------------------------------------------------------------------------------| | 0 | 4 | The file signature (0x504B5221) | |--------|--------|--------------------------------------------------------------------------------| | 4 | 4 | The package version, 1.0 | |--------|--------|--------------------------------------------------------------------------------| | 8 | 8 | The file size, in bytes | |--------|--------|--------------------------------------------------------------------------------| | 16 | 4 | The number of packets in the package | |--------|--------|--------------------------------------------------------------------------------| | 20 | 4 | Reserved | |--------|--------|--------------------------------------------------------------------------------| | 24 | 8 | The absolute offset, in bytes, of the first packet in package | |--------|--------|--------------------------------------------------------------------------------| | 32 | 224 | The package comment, max 224 bytes (112 characters) | --------------------------------------------------------------------------------------------------The first four bytes of the .pkr file always contain the same sequence of bytes (signature) - 0x504B5221 ("PKR!" in ASCII characters). This allows to uniquely identify the package. Then follows a DWORD value representing the package version, currently 1.0 (0x00000100). Next is the size of the package file (INT64), in bytes. Although the size of the .pkr file is not limited, the length of one packet may not exceed a little more than 4 gigabytes (see below). Note that the value of this member should be equal to the actual file size, otherwise it is assumed that the package is damaged. The next member (DWORD) of the structure contains the number of packets in the package. It should not be zero, since it is not allowed to create empty packages. The next four bytes are reserved for future use. The sixth member (INT64) of the PKHEADER structure is the most important and contains an offset of the first packet in the package from the beginning of a file, in bytes. This means that the first packet does not necessarily follow immediately after the header. The latest in the package header is a comment. The length of the comment is limited to 224 bytes (112 wide characters, including the null-terminating character).

    After the packet header may be located a Packet Relocation Table (PRT) of variable size that contains information for fast packets searching, but is not currently used and has a zero length.

    Following the PKHEADER and PRT begins a packets. Each packet consists of its own header and three data sections: Description, Info, and Data. Why three? Because so much easier to classify the data within the package. You will understand this when you try to use the library for their projects. A description of the packet (PKPACKET structure) shown in the following table.
     

    -------------------------------------------------------------------------------------------------- | PKPACKET | |--------------------------------------------------------------------------------------------------| | Offset | Length | Purpose | |--------|--------|--------------------------------------------------------------------------------| | 0 | 4 | The size, in bytes, of the packet header structure (40 bytes) | |--------|--------|--------------------------------------------------------------------------------| | 4 | 4 | The size, in bytes, of the description block, max 8192 bytes (4096 characters) | |--------|--------|--------------------------------------------------------------------------------| | 8 | 4 | The size, in bytes, of the information block, max 64 KB | |--------|--------|--------------------------------------------------------------------------------| | 12 | 4 | The size, in bytes, of the data block, max 4 GB | |--------|--------|--------------------------------------------------------------------------------| | 16 | 8 | The 64-bit unique identifier of the packet | |--------|--------|--------------------------------------------------------------------------------| | 24 | 4 | The checksum (CRC32) of the compressed data, or zero if no compression | |--------|--------|--------------------------------------------------------------------------------| | 28 | 4 | The uncompressed data size, in bytes, or zero if no compression | |--------|--------|--------------------------------------------------------------------------------| | 32 | 8 | Reserved | |--------------------------------------------------------------------------------------------------| | Description | |--------------------------------------------------------------------------------------------------| | Information | |--------------------------------------------------------------------------------------------------| | Data | --------------------------------------------------------------------------------------------------The first member (DWORD) of the PKPACKET structure always contains the length, in bytes, of the packet header and currently is 40 bytes, but can be changed in the future. The second, third, and fourth members (DWORD) of the structure contains the lengths of the corresponding data sections, in bytes. If any section is missing, the value of its length is zero. A full packet length, in bytes, can be calculated by summing the four values is listed above. The fifth member (INT64) of the structure represents a unique packet identifier (ID). It is a 64-bit positive number that uniquely identifies a packet within the package. The sixth and seventh members (DWORD) of the PKPACKET structure is used only if a data of the Data sections are compressed, otherwise have a zero values. In the case of compression, the sixth member of the structure contains the exact data size of the Data section, in bytes, after uncompression. The last member (INT64) of the packet header is reserved for future use. Immediately after the packet header begins a three data sections that are described in more detail below.

    The Description section is the first in the packet and designed to store any text information. It may be, for example, the name of the file, in the case of adding a file into the packet, or just a short description of the data that is in the packet. The maximum length of the this section is 8 kilobytes (8,192 bytes) or 4096 wide characters (including the null-terminating character).

    The Info section immediately follows after the Description section. Here you can store any auxiliary binary data, for example, the attributes of the file, the date and time that a file was created, last accessed, and last modified., or something else. Alternatively, you can store in this section are small files such as cursors, icons, etc. The length of this section is limited to 64 kilobytes (65,535 bytes).

    The Data section is the third in the packet, and used to store main packet data. The maximum length of this section may be up to 4 gigabytes (4,294,967,295 bytes). Moreover, the data of this section can be compressed by using the native LZ algorithm (not the most optimal but fast enough).

    These three data sections represents a one packet, and must follow continuously each other that as shown above. Furthermore, any or all of these sections can be missing in the packet.

    Then after the first packet immediately begins another packet, if any, etc.

    As you can see, the .pkr files have a simple structure consisting of the sequential blocks of data. Especially for ease of use of packages, I wrote the UDF library which you can download below. A detailed description of each function you can find inside the library. Also, the archive includes all the examples and supporting files. As an additional example, you can download the Package.pkr file containing the same files as the .zip archive, but only created by using this library.

     



    I hope this UDF library will be useful for your projects. Also, if anyone have any questions or comments, please post it in this thread. I will be glad to any feedback and constructive suggestions.

    Almost forgot, this library requires >WinAPIEx UDF library version 3.7 or later.


    Available functions





    Package UDF Library v1.0

    Package.zip


    Examples





    Extracting file (Simple)





    Adding binary data (Simple)





    Extracting binary data (Simple)





    Addition





    Extraction





    GUI (Advanced)





  16. Like
    PlayHD reacted to guinness in Image in traytip?   
    It's not possible. Search Toast UDF.
  17. Like
    PlayHD reacted to ISI360 in ISN AutoIt Studio [old thread]   
    ISN AutoIt Studio Version 0.93 is online!
     
    Changes Version 0.93 BETA: (translated by google translator)

    -> AutoIt ISN Studio: <-
    -----------------------------------
    - Fix: Fix the auto-configuration of program paths in Portable Mode
    - Bugfix: Various bug fixes in "DBUG" tool (thx to pandel!)
    - Fix bug with "file has been modified from auserhalb ISN" was finally solved!
    - Fix: Fixed a bug where the project tree when changing a tab disappears
    - Bugfix: Various bug fixes
    - NEW: Dutch language added (thx to junkew)
    - NEW: In the script editor in the autocomplete box now displays icons (icons based on the code coloring scheme (old / new))
    - NEW: New hotkey: Open the selected file (eg. Include) (CTRL + I)
    - NEW: in the code a file path is specified (eg. "C: test.jpg"), this file can now be performed via "right click -> Open File" or CTRL + I to open!
    - NEW: Show Code Snippet: Right-click on a function in the script tree - "Show code snippet"> choose. The displayed image can even be edited as required!
    - NEW: Chinese language update
    - NEW: Runtime in debug window is now in format "00:00:00" (hh: mm: ss) indicated
    - NEW: "Start this program" The macro now supports path variables (eg.% projectdir%)
    - NEW: TidySource.au3 was removed. The menu item Tools -> Tidy source used now the "real" Tidy! (Data Tidy Tidy.exe)
    - NEW: When opening a project (however must be enabled in the program settings!) The previously opened tabs can now be restored
    - NEW: In the "Tools" menu, you can now find a bit Operations testers! (Bitwise operations visualiser by Siao)
    - NEW: The ISN AutoIt Studio now uses a newer version of SciLexer.dll
    - NEW: If text is highlighted in the script editor automatically searches for the word mark and color-coded in real time! (Can be disabled in the Preferences again)
    - NEW: you insert a new macro with the info messages in the log window of the ISN can (at left below)
    - NEW: elements in the project tree are now on the file type "together" and then in alphabetical order
    - NEW: In the project management and the project properties you can now by clicking the "Edit main file" another main file for your project yet!
  18. Like
    PlayHD reacted to PhoenixXL in Transparent GuiCtrlCreateEdit   
    Here is an example for you - it will work till the link is valid
    #include-once #include <GuiRichEdit.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> Main() Func Main() Local $hGui, $hRichEdit, $iMsg $hGui = GUICreate("Example (" & StringTrimRight(@ScriptName, 4) & ")", 320, 350, -1, -1, 0, $WS_EX_COMPOSITED) $hRichEdit = _GUICtrlRichEdit_Create($hGui, "This is a a transparent Rich Edit Control." & @CRLF & _ "Press Esc To Exit", 10, 200, 300, 100, BitOR($ES_MULTILINE, $ES_AUTOVSCROLL), $WS_EX_TRANSPARENT) $File = @ScriptDir & "\cute.jpg" If Not FileExists($File) Then ToolTip("Please Wait while the Image is downloaded") InetGet("http://www.picgifs.com/graphics/c/cute/graphics-cute-920618.jpg", $File) ToolTip("") EndIf GUICtrlCreatePic($File, 0, 0, 320, 350) GUISetState() While True Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop EndSwitch WEnd _GUICtrlRichEdit_Destroy($hRichEdit) GUIDelete() EndFunc ;==>Main
  19. Like
    PlayHD reacted to Melba23 in Help creating licence key input box   
    Wingens,

    Something like this perhaps?

    #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <EditConstants.au3> Global $iChar_Limit = 5, $aInput[5] $hGUI = GUICreate("Input Autofocus", 500, 500) ; ###################### ; It is important that these controls are created in immediate succession For $i = 0 To UBound($aInput) - 1 $aInput[$i] = GUICtrlCreateInput("", 20 + (60 * $i), 20, 40, 20) GUICtrlSetLimit(-1, $iChar_Limit) If $i Then GUICtrlSetState(-1, $GUI_DISABLE) EndIf Next $hButton = GUICtrlCreateButton("OK", 75, 60, 80, 30) GUICtrlSetState(-1, $GUI_DISABLE) ; ###################### For $i = 0 To 3 GUICtrlCreateLabel("-", 70 + (60 * $i), 20, 10, 20) Next GUIRegisterMsg($WM_COMMAND, "On_WM_COMMAND") GUISetState() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit Case $hButton $sString = "" For $i = 0 To UBound($aInput) - 1 $sString &= GUICtrlRead($aInput[$i]) Next MsgBox(0, "Result", $sString) EndSwitch WEnd Func On_WM_COMMAND($hWnd, $Msg, $wParam, $lParam) $iCode = BitShift($wParam, 16) $iID = BitAND($wParam, 0x0000FFFF) Switch $iCode Case $EN_UPDATE ; 0x400 ; If StringLen(GUICtrlRead($iID)) = $iChar_Limit Then GUICtrlSetState($iID + 1, $GUI_ENABLE) GUICtrlSetState($iID + 1, $GUI_FOCUS) EndIf EndSwitch EndFunc ;==>On_WM_COMMAND Please ask if you have any questions.

    M23
  20. Like
    PlayHD got a reaction from czardas in Good coding practices in AutoIt   
    Atention! If you put Not in front a pair of parentheses, and inside is a keyword like AND / OR, AND will become OR and vice versa

    Eg.

    _NewVersion(False,True) Func _NewVersion($bSame_Thing = True, $bSame_Thing_Again = True) If Not ($bSame_Thing And $bSame_Thing_Again) Then ConsoleWrite("Hello World"&@LF) EndFunc
  21. Like
    PlayHD reacted to FireFox in vertical label ?   
    Hi,

    _WinAPI_RedrawWindow($hGUI) Br, FireFox.
  22. Like
    PlayHD reacted to UEZ in vertical label ?   
    Here a routine made by BugFix (I put it to a function):


    ;Thanks to BugFix Func Display_Rotated_Text($hGUI, $text, $px, $py, $angle = 90, $tw = 400, $th = 12, $tcolor = 0x000000, $bcolor = 0xF0F0F0, $font = 'Arial', $transparent = True) Local $tRect, $rotate, $RotateMe, $rFont, $hDC ; Create RECT-structure, fill data $tRect = DllStructCreate ($tagRECT) DllStructSetData ($tRect, 'Left', $px) DllStructSetData ($tRect, 'Top', $py) ; Set rotation $rotate = $angle * 10 ; Create structure for rotate text, fill data $RotateMe = DllStructCreate ($tagLOGFONT) DllStructSetData ($RotateMe, 'Escapement', $rotate) DllStructSetData ($RotateMe, 'Weight', $tw) DllStructSetData ($RotateMe, 'Height', $th) DllStructSetData ($RotateMe, 'FaceName', $font) ; Creates a logical font that has specific characteristics $rFont = _WinAPI_CreateFontIndirect ($RotateMe) ; Retrieves a handle of a display device context for the client area a window $hDC = _WinAPI_GetDC ($hGUI) ; Set text- and back color _WinAPI_SetTextColor ($hDC, $tcolor) _WinAPI_SetBkColor ($hDC, $bcolor) If $transparent Then _WinAPI_SetBkMode($hDC, $TRANSPARENT) ; Selects an object into the specified device context _WinAPI_SelectObject ($hdc, $rFont) ; Draws formatted text in the specified rectangle _WinAPI_DrawText ($hDC, $text, $tRect, $DT_NOCLIP + $DT_NOPREFIX) $tRect = 0 EndFunc
    Example:


    #include <GDIplus.au3> #include <GUIConstantsEx.au3> #include <ProgressConstants.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("[#] Form1 [#]", 633, 447, 192, 124) $Label1 = GUICtrlCreateLabel("Autoit team", 40, 112, 57, 17) $Progress1 = GUICtrlCreateProgress(104, 192, 177, 49, BitOR($PBS_SMOOTH,$PBS_VERTICAL)) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### Display_Rotated_Text($Form1, "Autoit team", 40, 260, 90, 400, 24) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd Func Display_Rotated_Text($hGUI, $text, $px, $py, $angle = 90, $tw = 400, $th = 12, $tcolor = 0x000000, $bcolor = 0xF0F0F0, $font = 'Arial', $transparent = True) Local $tRect, $rotate, $RotateMe, $rFont, $hDC ; Create RECT-structure, fill data $tRect = DllStructCreate ($tagRECT) DllStructSetData ($tRect, 'Left', $px) DllStructSetData ($tRect, 'Top', $py) ; Set rotation $rotate = $angle * 10 ; Create structure for rotate text, fill data $RotateMe = DllStructCreate ($tagLOGFONT) DllStructSetData ($RotateMe, 'Escapement', $rotate) DllStructSetData ($RotateMe, 'Weight', $tw) DllStructSetData ($RotateMe, 'Height', $th) DllStructSetData ($RotateMe, 'FaceName', $font) ; Creates a logical font that has specific characteristics $rFont = _WinAPI_CreateFontIndirect ($RotateMe) ; Retrieves a handle of a display device context for the client area a window $hDC = _WinAPI_GetDC ($hGUI) ; Set text- and back color _WinAPI_SetTextColor ($hDC, $tcolor) _WinAPI_SetBkColor ($hDC, $bcolor) If $transparent Then _WinAPI_SetBkMode($hDC, $TRANSPARENT) ; Selects an object into the specified device context _WinAPI_SelectObject ($hdc, $rFont) ; Draws formatted text in the specified rectangle _WinAPI_DrawText ($hDC, $text, $tRect, $DT_NOCLIP + $DT_NOPREFIX) $tRect = 0 EndFunc
    Another example here -> Fussball Chronograph (German only!)

    BR,
    UEZ
  23. Like
    PlayHD reacted to MrCreatoR in Some interesting menu estetics   
    So it's only for Vista+

    Btw, when exits after Vista message, there is syntax error (undeclared $hTheme).
  24. Like
    PlayHD got a reaction from UEZ in _WinShake   
    I made a small UDF that you shake a window.

    Try it!

    UDF: _WinShake.au3
    Example: _WinShake Example.zip

    Update :




    Here is a preview:

  25. Like
    PlayHD reacted to UEZ in File to Base64 String Code Generator v1.20 Build 2020-06-05 (embed your files easily)   
    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. compression option to use it within your script to avoid usage of local disk (file install)! It will also created the needed functions!
     

     
    Code is too long now for the code box -> Pastebin.com
     
    Download: File to Base64 String Code Generator v1.20 Build 2020-06-05.7z (6238 downloads previously)
     
     
    Code will run on 3.3.11.4 or higher versions only !
     
    Thanks to:
    Ward for the _Base64Encode() / LZMAT / MsgBoxEx() functions.
    trancexx for the LZNTCompress / LZNTDecompress and _Base64Decode() functions!
    wraithdu for bug fixing and advancing the code!
     
     
    Just load any file(s), convert it and use it in your code! Checkout tooltips when hovering some controls... 😉
     
    Example using some images from ..\AutoIt3\Examples\GUI folder.
     
    Display images from memory in controls:
    ;coded by UEZ 2011 #include <buttonconstants.au3> #include <guiconstantsex.au3> #include <GDIPlus.au3> #include <SendMessage.au3> #include <WinAPISysWin.au3> _GDIPlus_Startup() ;~ Global Const $IMAGE_BITMAP = 0 Global Const $STM_SETIMAGE = 0x0172 Global $msg Global Const $hGUI = GUICreate("Example", 600, 250) Global Const $idLogo = GUICtrlCreatePic("", 215, 20, 169, 68) Global Const $idButton = GUICtrlCreateButton("", 266, 150, 78, 81, $BS_FLAT + $BS_BITMAP) Global Const $hButton = GUICtrlGetHandle($idButton) Global Const $Bmp_Logo = _GDIPlus_BitmapCreateFromMemory(AutoIt_Logo(), True) _WinAPI_DeleteObject(GUICtrlSendMsg($idLogo, $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_Logo)) Global Const $Bmp_Button = _GDIPlus_BitmapCreateFromMemory(Merlin(), True) _WinAPI_DeleteObject(_SendMessage($hButton, $BM_SETIMAGE, $IMAGE_BITMAP, $Bmp_Button)) _WinAPI_UpdateWindow($hButton) GUISetState() While True $msg = GUIGetMsg() Switch $msg Case $idLogo MsgBox(0, "Information", "The picture has been clicked!") Case $idButton MsgBox(0, "Information", "the button has been clicked!") Case $GUI_EVENT_CLOSE _WinAPI_DeleteObject($Bmp_Logo) _WinAPI_DeleteObject($Bmp_Button) _GDIPlus_Shutdown() GUIDelete($hGUI) Exit EndSwitch WEnd Func AutoIt_Logo() Local $AutoIt_Logo $AutoIt_Logo &= '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' $AutoIt_Logo &= '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' $AutoIt_Logo &= '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' $AutoIt_Logo &= 'cy5hgUkAqHEOcABh1yoABOpwVLGVSVcAZYpQ1AQvsBMAfYoZ69AEe4AABTHzZgA0ABsA4AsP0D+WCrMAHmBImEED/eUAEPEKAC5Qr50AsAqkCpDX8AkABkALbxAGofAARVJrC0FzsPcAYFi0kLW+KgUAV7kGwvCmLQAABxcLbAPRD9IAig0JkADkmQEA4LAuGogXHQAAA85gLntAGOMAxBSD0AEJMAYAd4AXCTAANDAAdEtwBTKQBF8AAAlYME6EAQMAotMEAgADIzAAAAlQB/81lpIA/wAEqUAkrQMAHIMQGom3BCAA0wH6kgSD0L0A3QoHQNQQ0uAAC+zgAs7gDAgAgAb+iKqVe7kAW1APiCABUQsAOJ/bDVpgA2EAAAG0wKsQywkAczALZ9AJzuAAAiwgAObDU6AA6Q9CYAXqMAEALgAHwICzWYMADxoHtuyAAScA1gS+QIMIgAAAVtACPoABOzAAAVFQryEsAIsAdG4u8AL4W68AL6DCTNByJvAAuFaAADjQYggAMAE+IABgsAcATHAbWfOnGwAAtkF8bdzRBEAAELZEOwEUCwcAMqB4jDsMGXAAvy7gAssgAnwA4HR6EASWCwEAAQxBUXs4CIwACFTAwDNQAHoAIAW4hpk0cMYA7DBnLmQ2WUMAAzS8AzIgA0AA/+CzYvMAzuAAC4icyEAgeZkA0AQykAHfIgAAMhAAe9AIwIAAyIi8yIuUCQgABQSJfMpA8AAA8NNyrmECviAACZLgCwKwA2AA8ACpMHkzkQkAD6AOkhDJigwABoqXA00QB7MAcsq/LMYOIQYAauADL9ACLeAAAgiAAmuMqkEA0Kqw8Az18EAAP7DN1xNHEAAACzNQCOnVx6sAsAzOzA7zwQ8ATUB3AuFIlfQASEP8D+5cSXgAQCQttwdxkM8Ae3BQTPDOP+sAnRH2zpMHGcIAjAd7AAL5HAcAILAH69YxYTEAz5GUbSGSA1cAgG30PFwPkQMA0rADPsAOzgwAzfybCAqgB4IAMA4zAAungAsAXPQETxBHzxAADm4wDkGgBz0A/4CNa9AF5twAAi8Axhk8m7IAswRAHdSbw0gAQh3Uf5QDNMcABOc5c0VX1EAAHRY50NRF/UcAjDRESs0E58MA1Ljx01PNFlEA7dRUndHVIAAAHe3MLUAEZ1AAA+jwCuSgB4UAYNJuEA6nMNcA4QDTqCDOt/AACokwByKwAdwAcM4+sANxcJ4AQw0SUR3WG5EAA4pddIgtFGIAYA0CAAfs8AIAzayPJUBvPUAADkcQBIWACp4A7dmFUAhHMFMA61UDQxABE6AA0ywAB4K91AMABCyR8dg7kAEAAEDZPrwMUcAABYuQCK7QA7cAcATADdy3QA4ArwANiwANSFAAgzqNpxggA3EA0EevDduxXQ0AQCAJPsACto0AxstwATeARW0A/wANsiAL0PAA3WiABDzwDZ0A0AKTzQI+EL4AILDURifd3SEARA8gALTNAuwAkN8vMAEemg4Av9AFQ9AFZ/AACzywDVbQwy8AwA4sAAAZAAwAARAIWR3d8p0AMplgDWAALgAAwAL4PdnOIAwAy0AEII4ANMAAnwmu4AxuAkAA8NznU9gT/iYAslMNpAAEJoAAAT6Q4Rue3zgAnt8aDgAzLAAAKa7O89LYLS4AIlGdCdUQCAEAIAMmsA4Z4AMANQ4AUM7jPpAAAetgApv83C4AdAXsPOTAUuQAV6AKpPCsQLAAA8AgAGb+yZMA3GiBAORaLuQAXI4pi50JV/AA5aqgCk8KAqQAAAKBoArqfD4Ac66+Ev7mmNIA1HI+5+syRHMAIO4rgC7ojF4AEIp92IxddIoA3eiUXumWfukAmJ7pmr7pnB4AEAA7' $AutoIt_Logo = _Base64Decode($AutoIt_Logo) Local $tSource = DllStructCreate('byte[' & BinaryLen($AutoIt_Logo) & ']') DllStructSetData($tSource, 1, $AutoIt_Logo) Local $tDecompress _WinAPI_LZNTDecompress($tSource, $tDecompress) $tSource = 0 Return Binary(DllStructGetData($tDecompress, 1)) EndFunc ;==>AutoIt_Logo Func Merlin() Local $Merlin $Merlin &= 'R0lGODlhRABHAPcAAP///xgxcRw1fRgtbRw5ghgtaRw1eRw5hsrKyhgxdRw9lhQkYRgxbRQoaRQ1fRg1eRw5ihg1dSBBkhQtZcLCwr6SlhQkWSA9kq6qrsaamrKytrq2tsrKzr6qQRQtdSA5ijldlhg1hhQxfaKenhAodRw9igwkVXl5eaJ9eRgxaUFpns6ioj1JVRAcSVVZWWFlYQAEHIaCghQ1jhgoYbaiPevr676+vhQtceeysiBBnrKOjhAkbS05Wd+mqhAkXY6KjqKWQWlpacqyQSAtSQggZcbGygwcUWFlVWl5kn1hYWGGshgxeaqqqsbGwpaSltvb3yQ9cYpxcSAxWRw1gt+uro59hqKmpjFFeYZpaaqCghQoXSAxaRAkZZKSjhAxhgQQNT1dkvPz8yhJmhQ5mhQgPTU5SX11SYaGjgwgWaKCguPj4wgQJK6aPZZxcUVFRTVZkklNYa6KjnF1eX2GnteiomVVVU1NUbaSltvX1zlJaZKKTVVdZdemqop9ORQoVcqmqiA5guvKzl1laa6aNZ6ennFZWRgxYbbC31GGwi1BaZKKVUFJZbq6vmFZca6engwYOUVZdVl5quvj3zFJilF5oiQ5aUFZpjExKKaWTZ6qvt+6vjFJglFJJAgYSUlVZaaWOWlpYQwofUU1NSA1cZaChnFxVXFxaUVxpk1dhhw9ktK+QVFBQdvKyu+2ukk5PSRFmjFVhjlFYQgkcca2SWFNVbaqXRwtWb6Wmj1JcX15WWFJScqyrlFBOSRBhuPGyvPv63VpNXl5ZYZ9VVldRWF1ivu+wj1lmhw1cWFVHLqqSUE9RW15in2CgmF9ohQcNQAMKCAoPSRBinl1PePf2yQ5XZaSaV1phig5ZbKysjVZloqCefv774aSru/XTVFtlsa2VZqORTU1QaaeXYJhXZZ9eUVFMdK+TZKGRWGGnhQkTVVNRW1lVTk9VV1hYTFZprKGhnWSsp6KNRwxbff7+//GxmV1fRw5fVVdfc7Kyhw5eRgtcb7CzkU5IG1hHIZlYf///yH5BAEAAP8ALAAAAABEAEcAAAj/AP8JHEiwoMGDCBMqXMiwocOHECM+dGdMosWLCMXkuJAPFsaPFlFpfBUgEciTDpd906bxAMqXC8XJySFm2SQxMHMWVAFJwqsc3mTqHPov2odIOWjOAYeOaE4kan5ZGpNp275mTl9mklTjVyZL07rigZcVJDwKP6qQ2kXPUZUYViiU/aikUYUePajgwNujTT0lczFWoKMpkK/Cgf7QIRX4YjM6rOZZOiT1UBg+txpbrELHV5hDeFodelJDUwYkmh8SuxVnRStWgTThCGQYRwZHjFMzJIZFxwo+VFoVG96KD58MWcZF0r1wzjgdGSoAx0GdygroUaIAZp6QWxsdWaJk/9Fxp8KdOGmwVEiTZjv3g0rS6HinrhCW+1iS1NGF/Md7hVXo4Ig6rvCyyoGuiBLDH1nM8V9CVeATBgJBrOLKhW50UUMNu6D24EGM/FJDGDVw0AVcT5DYVSYfGsRNWGrg8cQ0aqjxxBN4yBijgy0OhA0eHBRBASFO/BBDDE5gwIgNCOBjRY8CKcEENtgwYUoht1BBBR9Z1HGGFUxgYIV7H85RpBNBnLDLHxVUcMsfjrRzwg8/ENJUj2eccEI7MeDDAQUbbMAIBRzYEESaMZwBpSntuMAMBwhEGiSkTTIShAtBMAMlLuGYskERkYYaqpBWtMMDJT2eMgQ0MTDBCKiiRv9KgQZWBPGFIS26E8sljwThBDY2wDoqI0z8oMwaX+Tz4D21mDNLH27EQAiwwlJgAwZOmDLEFASUEA0Y3PUiQy3ddFNNGaB0wcQGFBThrg3YjBCDGwVIYO8FB7yRmgrRyIDKN9WYcwUJZTAz7aDWEovmtlN8cIG9B0zSWDYClHCBNZN4IUg7Mtjygrob2EABI9gQEoMyS4iDyxQWS3ABBPacUpYKD1xgcyoQCOBBPgccUMYJB9uwAbYuTHCP' $Merlin &= 'OZ54QIDDNkMgcVa9lHDvBwQEII8AgJTwgB0gM0LrCTzIYIo5eqSwRAgQpPKKBFNk45QxU9grQSpePNBAAvYAckAJhgT/Me0G2DhhxwMQXDGLEEdssccm1dSjwAWAOJWP1GsHAUoKLOAiAAGAfAABDzFggI0VL8hTwgEh5KIKOCxgkkwwCqzd9lD1XKG2AvXU0kEf65RiD+d7LwHHCBj8wEPPPYsgzO6DYOLwvb3o1AwuqdwbDSCLALNFKJvrvXcKJzABxxQ9AwKIACLkMUwfHUACgU8SQBA9TJu8fy8BS3BRxg0JGJA38iFIhCAYcADzAYIA9hDAEgrghlgIIgQPs9cUQPASKDQAEK94xQU+IAB9+EEK+gjAA37nPa354AAESOEBE2iAFKTDBwnImk8uIAAtgOsk14DBGlpggFQcwAAzGEIB/xjAgAgIIAQh8N4Bp2APbqWQhQxoQToYIAAIlGACj1jDGm6IQxjokAcG8MCqBlCAASTgAYK4QhLNRwABuPF3bTTAAwbgh0dM4AFQgMYadMhFlCTiC87gRTh80AI/BKAABQiACEyRDDWu0I1uTKEADGCALWjhEUawBS9EsQYy9BEliDhFIVCAAmV8oQD6KEADFAkJVSgiBJKkJCTdKII9uIALjyDDKNsAh6y0hgp0gEMDBnCNRNwgFLmYxSweKUsB5AN9odCDC4iQDnLg4DiKIgoSspCBFWQgDvIgphkSUYoOzCIZv3OjLEUQDEWAAhQdWAcR4ODNFVSAHKgaChLekf+BDNThFqMYwASkwYYOdEAIwRCBOilJSXsoQhUdoAEQhtGINERhBbdAgVOQgALWkCEDUBhAA1hAAyEIQRiQZChDH2AARUSUBtJoRBTYsYI4oGA5Q7GGP7LzhSTgogAzWMAiPOEJA6T0AUhl6BKEIQSJSmEP7BhCGvxRCKdQog47hQY0GABULTTAAyJg6UojgNQHiOAFQtCDHtjAg058oQ7kSII3skKJRtAiCZxApBa0UIAEkHWsESArS9vxggSMQg9wSActCqGLuc7FDsDgxDV24AO+BuCvcoxAAjYb2Ah4wAMJ8EAlYjEEdXDiHogIzDDigYw+mIEFPkikX8u62QD/bPa2tdVHA4aADH54ZC6IYEE/+vAJcLghtgywLVKXkIAAONe5t3UuV4fAiXT8di6XQMYnzrEFNPA1uZu9Ai48EAB93OC5zyViAaSgjk5cNytg4IcdzDAIHlR2iLb1QB4wUQkSVGIR50UvA8iohXLkMjAqSAcXCmAGO6DBAmVMrn5pkIsjAMETAZYuVwtQYGc8IjDGMMEEGpACalgAwikYgD5G4QkgsIEGpbgBEZMbAPVy2AgWSAeIRVyACczAAnwtgDxKAYQOsOHIeZDxjGes13RYAFdzMYQFJkDlGfghyAyoxB7McGQagKMS+mBAmJkM1HQYQQsI3usMZqCFKyNyacCyWAQbznEEM7hAyWSeQJuvoALNwAIKUNBCC6b85hvAgQ2J2MEO5LFkG0/AAipILXNOAQYLxBaRN1hEOxqgygWseQYNaEBQfZCCFHxIBW8otTwYPYAUGGITIIi1rGP9BplB6da4TkhAAAA7' Return Binary(_Base64Decode($Merlin)) EndFunc ;==>Merlin Func _WinAPI_LZNTDecompress(ByRef $tInput, ByRef $tOutput, $iBufferSize = 0x800000) 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 _Base64Decode($input_string) Local $struct = DllStructCreate("int") Local $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", 0, "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0) If @error Or Not $a_Call[0] Then Return SetError(1, 0, "") Local $a = DllStructCreate("byte[" & DllStructGetData($struct, 1) & "]") $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", DllStructGetPtr($a), "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0) If @error Or Not $a_Call[0] Then Return SetError(2, 0, "") Return DllStructGetData($a, 1) EndFunc ;==>_Base64Decode  
     
    Play a wave file from memory:
    ;coded by UEZ #AutoIt3Wrapper_UseX64=n #include <apiconstants.au3> $binWave = Wave() $tWave = DllStructCreate('byte[' & BinaryLen($binWave) & ']') $pWave = DllStructGetPtr($tWave) DllStructSetData($tWave, 1, $binWave) _WinAPI_PlaySound($pWave, BitOR($SND_ASYNC, $SND_MEMORY, $SND_NOWAIT)) $tWave = 0 Sleep(2000) ; #FUNCTION# ==================================================================================================================== ; Name...........: _WinAPI_PlaySound ; Description....: Plays a sound specified by the given file name, resource, or system event. ; Syntax.........: _WinAPI_PlaySound ( $sSound [, $iFlags [, $hInstance]] ) ; Parameters.....: $sSound - The string that specifies the sound to play. The maximum length is 255 characters. If $sSound is ; empty, any currently playing waveform sound is stopped. ; $iFlags - The flags for sound playing. This parameter can be one or more of the following values. ; ; $SND_APPLICATION ; $SND_ALIAS ; $SND_ALIAS_ID ; $SND_ASYNC ; $SND_FILENAME ; $SND_LOOP ; $SND_MEMORY ; $SND_NODEFAULT ; $SND_NOSTOP ; $SND_NOWAIT ; $SND_PURGE ; $SND_RESOURCE ; $SND_SYNC ; ; Windows Vista or later ; ; $SND_SENTRY ; $SND_SYSTEM ; ; Three flags ($SND_ALIAS, $SND_FILENAME, and $SND_RESOURCE) determine whether the name is interpreted ; as an alias for a system event, a file name, or a resource identifier. If none of these flags are ; specified, _WinAPI_PlaySound() searches the registry or the WIN.INI file for an association with ; the specified sound name. If an association is found, the sound event is played. If no association ; is found in the registry, the name is interpreted as a file name. ; ; If the $SND_ALIAS_ID flag is specified in $iFlags, the $sSound parameter must be one of the ; $SND_ALIAS_* values. ; ; (See MSDN for more information) ; ; $hInstance - Handle to the executable file that contains the resource to be loaded. If $iFlags does not ; contain the $SND_RESOURCE, this parameter will be ignored. ; Return values..: Success - 1. ; Failure - 0 and sets the @error flag to non-zero. ; Author.........: Yashied ; Modified.......: ; Remarks........: None ; Related........: ; Link...........: @@MsdnLink@@ PlaySound ; Example........: Yes ; =============================================================================================================================== Func _WinAPI_PlaySound($sSound, $iFlags = 0x00020010, $hInstance = 0) Local $TypeOfSound = 'ptr' If $sSound Then If IsString($sSound) Then $TypeOfSound = 'wstr' Else $sSound = 0 $iFlags = 0 EndIf Local $Ret = DllCall('winmm.dll', 'int', 'PlaySoundW', $TypeOfSound, $sSound, 'ptr', $hInstance, 'dword', $iFlags) If (@error) Or (Not $Ret[0]) Then Return SetError(1, 0, 0) Return 1 EndFunc ;==>_WinAPI_PlaySound Func Wave() Local $Wave $Wave &= 'UklGRg4qAABXQVZFZm10IBAAAAABAAEAQB8AAIA+AAACABAAZGF0YeopAACv/rTxoAOxDSX6RfPpB20LO/Yr9lkL+Qdd8xX6lg2yA9Pxm/5iDg7/xfFBA64Nhfo384wHiQuV9gD2CAsxCKTz0vlYDQAEA/JG/kAOaf/Y8eMCqg3k+izzLwekC+z21/W2CmcI7vOQ+RoNTAQ18vH9HQ7C/+7xhAKlDUL7I/PSBrwLRvew9WQKmwg39FD52wyVBGjyoP32DRkAB/IpApwNn/sc83cG0Que94z1EgrMCIH0E/mbDN0EnPJP/c8NcAAg8s8BkQ38+xjzGgbmC/b3a/W+CfwIzPTX+FoMIwXS8gH9pg3EADzydQGFDVf8FvPABfYLTvhM9WsJKAkY9Z74FwxmBQrztfx7DRcBWvIdAXYNsfwV82UFBQyn+C/1GAlSCWX1Z/jUC6gFQ/Np/E4NagF48sYAZQ0L/RnzCwURDP74FPXFCHoJsfU0+I8L6AV88yH8IA26AZnycQBSDWP9HfOzBBoMVvn89HIInwn/9QH4SgsmBrfz2vvxDAkCvPIcADwNvP0j81oEIwys+eb0HgjECUz20fcEC2AG9POV+8AMVQLg8sz/JA0R/izzAgQnDAT60/TLB+QJmvaj974KmgYw9FP7jQygAgfzev8LDWf+N/OsAysMWvrB9HcHAwrp9nj3dgrRBm/0EPtbDOoCLvMq//AMu/5E81UDLAyw+rL0JAcgCjb3T/cwCgUHrvTR+iYMMQNX893+1AwN/1PzAQMrDAT7pvTRBjoKhvcn9+cJOAfu9JT67wt4A4Lzj/62DF//ZPOsAigMWfub9H4GUgrV9wL3nwlpBy71Wvq5C7sDrvNF/pYMr/9381kCIwyt+5L0LAZoCiP44PZVCZcHcPUh+oEL/QPb8/r9dQz//4vzBgIcDAH8jPTZBXwKcvi/9gwJxAey9en5SAs+BAn0s/1SDEoAo/O2ARMMU/yI9IgFjQrB+KH2wgjuB/X1tPkOC3wEOfRt/S4MlQC882YBCAyk/IX0NwWdCg/5hfZ3CBcIOPaB+dIKuQRr9Cj9BwzhANXzFwH7C/X8hvTlBKsKXfls9i4IPAh89lD5lgr0BJ305vzgCykB8fPJAOwLRf2I9JYEtQqs+VP25AdgCL/2IvlZCiwF1fSl/K4LcgEa9HsAywua/Z/0OwSpCgr6VPaDB2wIIvcI+foJUgUt9XL8YAuxAV/0LwCUC+79yPThA44Kafpf9iMHcAiB9/X4ngl1BYP1QvwQC+4BpPTr/1cLP/719IoDbwrF+m/2xQZvCN/35vhDCZIF2vUV/MIKJwLp9Kb/HguL/iL1NgNQCh37gPZqBm4IOvjZ+OkIrgUu9uv7dQpeAi31Y//lCtj+TvXjAjEKdvuP9g4GbgiX+Mn4jwjNBYP2v/snCpYCcvUh/6sKI/989ZACEgrN+6H2tQVqCPD4v/g4COUF1vaa+9oJyAK39eT+cApp/6z1QgLvCSD8tvZgBWMIRPm5+OQH+QUm93n7jwn0Avv1rf41Cqr/3PX6AcoJbvzP9g0FVwia+bb4kQcJBnn3W/tDCR4DP/Z4/vkJ6f8N9rMBpgm7/Ob2vAROCO35sfg+BxwGxvc8+/oISgOB9kH+wQkmAD32bQGCCQf9/fZrBEUIPvqv+O0GKwYU+CD7sQhyA8P2D/6HCWIAbfYpAV0JUf0X9x8ENQiN+rH4ngY2BmL4CftnCJUDCPfg/UsJmgCg9ukANAmX/TX30wMlCNv6tPhQBkAGrfjz+h4ItwNL97P9DgnSANP2qgAMCdz9UveJAxUIJ/u4+AMGSQb4+N761wfXA4z3if3VCAQBBPdwAOQIHv5t90UDBAhu+7z4vAVPBj/5zfqUB/IDzPdj/ZsIMwE39zcAughd/o73AAPuB7f7xvhyBVEGifm++kwHDQQO+D/9XghiAWv3AQCQCJn+r/e9AtgH/vvS+CkFUgbR+bL6BgckBFH4' $Wave &= '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' $Wave &= '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' $Wave &= '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' $Wave &= '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' $Wave &= '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' $Wave &= 'G/1tAqMAj/wwA+X/K/32AnX/J/70AQAAQ/4/AQ8BU/2KAY4BbvxZAgYBofygAjgAov31AT4AOP7+ADoBsf24ACUCtPxQAQQCcfz1AR4BMP3IAaYAD/7WAE0BEv4TAGcCRv09AL0CpvwHAQMC8/xdATQB3P2wAGABYv6j/18C//1Q/xUDOf36/7wCBv2wANoBtf1yAIgBk/5i/y0CuP6i/g0DDf71/i0Dcv3S/3UCuf0LAMgBsP4+/+oBVP8//rYC/f4h/j4DLf7i/ukC/P16/xYCyv4b/7QBw/8h/i8C3f+a/fMCG/8E/hUDif7E/l8C+f7l/pcBBQAz/psBjgBs/V0CFABi/ekCU/8K/oMCUf+W/o0BLgBW/hkBAwGI/Z8B9AAO/WkCPwBt/WoC3f8w/okBVgBx/roAOwHZ/doAnQEW/aMBLgEN/QYCjQDO/XMBjgB3/oAASAE//jIA/AFq/cAA9wH9/F4BVAGD/TYB5ABn/l0AQQGf/rj/EwL2/eH/ewJF/YMADAJw/cQAVAFP/j4APgHn/m3/9gGY/iX/rwLY/Zn/lAKi/SQAzgFE/gsAUQER/0v/ugEx/6T+kgKd/sD+1QId/mf/OAJb/rv/eQEl/zz/fAGq/2L+NwJv/xn+xQLV/qL+ewKo/kX/rwE6/yj/TQH8/1j+ugEqAL39ZgKt//r9fQIt/7r+3QFh/wH/NgEqAHL+NwG8AKr9zAGCAJD9NgLd/zH+6wGr/8T+MAFHAJT+yAAWAdn9FgE4AW39rgGdAMf9xwEcAHX+LQFnAKz+eAA8ATH+ZgCzAZb99wBVAZP9ZwGtACn+FQGZALL+RgA/AZf+1//oAf/9MQDlAaL90QBLAfb92gDjAKj+JQAzAfT+c//jAYz+fv80Avb9GQDYAfP9cwBDAZr+BAAsATn/Pf+xASL/8f4+AoT+Xf82Ai3+5/+kAZ3+1P8zAWP/K/9pAab/nf4JAi//t/5YAqP+Qv/0AcP+iP9NAX3/J/8kAQgAgf6nAdz/Qf41Akf/ov4bAhX/Iv9vAZX/IP/zAEMAkP4yAW0AC/7UAQAAIP4JApP/sv6EAb7/Cf/YAF8AuP7CANUAEv5IAa4A2f23AS4ATv57AQAA4v7MAG4A4f5oAA0BS/6sADsB0f0wAdQAB/5HAWIArf7CAH8A/v4tABwBn/4bAJMBCP6LAGYB9P3iANgAf/6oAKAACP8MABAB+f6s/7ABcP7i/8sBHf5ZAE4BaP5yANcAA//5//0ARf9j/5wB8/5L//sBfP69/64Bev4aABwB/P7j//MAe/8//2cBd//f/uoBBv8k/+UBvf6p/2ABA/+8//kAnP82/yMB5/+m/qcBoP+o/ucBK/8q/5QBKP9//w0Br/83/+UANgCf/kIBMABe/rABuf+z/qQBcf8u/yUBxf80/7gAZAC5/tQApQBI/koBTQBe/oUB3P/X/jAB6v8h/6AAeADm/m4A8ABn/skA1AA3/jUBWgCM/iABJQAD/5IAgQAT/yEADwGr/kMANgFI/r0A3ABe/uoAegDd/oIAjgAy//P/CQEB/9L/aAGH/jIASgFd/o4A2wC//mUApwBC/9r/8QBU/37/bAHq/qz/jgGN/hUAOQG5/jAA0ABF/83/1gCX/1D/SAFc/zv/owHp/pT/fAHX/uP/AQFI/73/xQDD/0H/DwHH//D+hgFj/xr/mwEd/4D/MQFX/6H/wgDZ/0j/zwAaANP+QgHj/77+iwGF/xv/TAF//3L/zADm/1P/mgBRANr+6ABXAI7+TAEAAMX+SAHC/zb/2AD1/1b/dwBtAPr+iQCwAIz+6gB7AI7+HAEbAPr+2wAPAE3/ZgB1ACb/NwDjALT+dwDjAIL+zACBAMr+xQA+ADj/XAB2AE3//v/wAPf+BwAoAaL+YADjALP+kwCAABv/UgB+AGb/3P/kAEb/q/9CAej+7f8tAcT+QgDJAAr/OACRAHL/zf/KAI3/bv80AUb/gv9UAfn+4v8LAQz/' $Wave &= 'CwCyAHX/w/+xAMX/T/8JAar/MP9SAU7/fP83AS3/y//YAHn/tv+hAOf/TP/PAAAAA/8pAbb/Iv9DAWz/ff/5AIv/nf+cAPv/V/+UAEIA+f7kABwA5/4oAcX/Lv8IAbH/d/+hAAQAaP9kAGgADv+SAHMA0P7rACcA8f77AO3/SP+mABEAb/9GAHcANP9DALAA3P6WAIYA0P7OADgAHP+fACoAa/83AHUAYP8EAMsACv82ANIA0f6EAIsA/f6FAFIAXf8vAHAAg//d/8kAR//h//4A9f4pANYA9/5TAIUAT/8kAHAAm//I/7UAif+d/wgBN//M/wcBEP8NALsASP8OAHwApf/C/5kAwv91//IAiP95/w==' Return Binary(_Base64Decode($Wave)) EndFunc ;==>Wave Func _Base64Decode($input_string) Local $struct = DllStructCreate("int") Local $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", 0, "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0) If @error Or Not $a_Call[0] Then Return SetError(1, 0, "") Local $a = DllStructCreate("byte[" & DllStructGetData($struct, 1) & "]") $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", DllStructGetPtr($a), "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0) If @error Or Not $a_Call[0] Then Return SetError(2, 0, "") Return DllStructGetData($a, 1) EndFunc ;==>_Base64Decode  
     
    Display Font from Memory:
    ;coded by UEZ #include <GDIPlus.au3> Global Const $bFont = _bFont() $sFontname = "Jellyka - Estrya's Handwriting" $hGui = GUICreate("Example 1", 400, 320) $tFont = DllStructCreate('byte[' & BinaryLen($bFont) & ']') DllStructSetData($tFont, 1, $bFont) $hFont = _WinAPI_AddFontMemResourceEx(DllStructGetPtr($tFont), DllStructGetSize($tFont)) GUICtrlCreateLabel("AutoIt Memory Font Example", 25, 10, 380, 100) GUICtrlSetFont(-1, 100, 400, 0, $sFontname, 4) GUISetState(@SW_SHOW) _GDIPlus_Startup() $hGfx = _GDIPlus_GraphicsCreateFromHWND($hGui) $hCollection = _GDIPlus_FontPrivateCreateCollection() _GDIPlus_FontPrivateAddMemoryFont($hCollection, $tFont) $hFamily = _GDIPlus_FontFamilyCreate($sFontname, $hCollection) $hFont = _GDIPlus_FontCreate($hFamily, 80) $hFormat = _GDIPlus_StringFormatCreate() $tLayout = _GDIPlus_RectFCreate(60, 230, 400, 80) $hBrush = _GDIPlus_BrushCreateSolid(0xFF404040) _GDIPlus_GraphicsFillRect($hGfx, 0, 200, 400, 200, $hBrush) _GDIPlus_BrushSetSolidColor($hBrush, 0xFFF0F0AF) _GDIPlus_GraphicsDrawStringEx($hGfx, "GDI+ Schrift", $hFont, $tLayout, $hFormat, $hBrush) While GUIGetMsg() <> -3 Sleep(10) WEnd GUIDelete($hGui) _WinAPI_RemoveFontMemResourceEx($hFont) _GDIPlus_FontDispose($hFont) _GDIPlus_FontFamilyDispose($hFamily) _GDIPlus_StringFormatDispose($hFormat) _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGfx) _GDIPlus_Shutdown() $tLayout = 0 GUIDelete() Exit #region ;Code was generated by: File to Base64 String Code Generator Func _bFont() Local $bFont $bFont &= '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' $bFont &= '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' $bFont &= '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' $bFont &= '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' $bFont &= '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' $bFont &= 'NwNCKsB6NAEOXACYfCwEFh4jKQAMLQf8GAkbJACgCAQYuKwIIgAOIB8NA4wKOgAQMr62YiwUBAAkRJcBOSYaHAAgOAgECBgESgAi/QA0ECBEFAAABAAUALsDfAADMwBBAEwAVfwAWSJ6AYeCD4AA4XhADko3IzkVYTcvAeRRFyIW4RQ2NzNhWCsBqgfgayeAHxPAFzfBWAAnBhcUIycHMwA2NzUFFQc1AQC8j20ohBomCAAZHx8VHDQbUQASHiAEFhIwkQAXsDwcf7FAUABYWEht31k/BAB2zlo6IBQYJADvJQaSmzkYBAAoBBgURIgIDAAMBBkPAWgIAwAzgDYyiDAMDAAQDiIcbBwIHAAMHy0ElAxbVQAI4HEzBDFHIAA8JTMEcDAYBAAEyGmvlP6QGAQIHEAOBBUDEARgIA0bBHDgqmNVEQD/1gH5BGoAJgOgMCBLMhcGBwIVBBc34AAdARAfAZA3MxQHwKc9AWAbMyCaQhs2C2CdQBs1AQCRCAgIC1FABAAoIyFwkEAEGAA8f0UYVyEMJwAZBAgMQEyUQAB8jARsIARqGAAzuf7zXwQIIIAIEFj+/XUQ4LoA7FicBCRoEAgAA6mzASG//oFA/tgoDEOtYxL/AtuAAHMDmAArAG5EYzEhQqAvHwFDoWc3GYFDEzZgQSC9ExUGBWAuAgGdFxUWEzPCNaC9NyYjNaE1wC4BIr4BE685FFwcAAxpJwikREBUAAgoDH1vKGhfAGEcCAwdO5VTIAxEX3kEACwEEAAIFRcEQV8wqABIA5hMHBgEWQBvBFw0d/1MCQAvEAgsARBIPAAMWQtc/swEEAD0AaslDBAbKwAEXv6GEDADFQAktAyYEBN1UgwuRgB04WIKAMQCGFoDSODSoioVIzRlgEkDZK03BoFkYlk2AAHKGGEXCHAMAOetEJwoFGC0AAygcLI6DNB3AANITAQo/rA6AB5sGAQ4HDgQAANxHiIMks5kAeAjzQB+AukDsmOgeKCnEwQTI2bgVDUQNjMVB8CoJicDDWFPNmABwA00AzcWDBMSRCHhaJ0BxHgAEOifVRCACQ8ACHA0TKwEWCAAUIhoBCwINQ8AEQuHmXzcjLAAEJMDsg3+8UAAKAiVt1wNZ0wABCQYSBCllwEALBwYLykQdAQAGt7YugFGCBsA/rf+pBeJf2kIrGw8APIBABAAoI0CHANh0iQycQnQNTcnI8NdN3IKAWg4BhUWQBCmXoQQ3EAARCQILF1/LDQAOBg4BAQ7XTQAD22RU2JyIHQAILAowFcDYSgABAsVCBAICXNgLRcZDwRARDB8gABZO1hEBGhwGACPkRslBEt5JAHwEcwApQS8BBUQADgARvJXHwEVNDYl4YAfkGSBVyMisgUAZzY3gGexCSPiSn1TCDXzPsET4GgiJiATIgAHiBhwKAhZAUB3iGQoZy2wBwQAkBSM/qjsEDAAPFwEZUdePi0AJ0QkVCA0RGQAMBSccDqCeBAAnEwbFQhiOgQAFaRMFBicOGwAIDAUEFMdnFgAZ40QDAQIPNoAGigIHESRIwQCDNCMvy0UEV8gQFBcGNhHDVCRmQgzEJCxFBgAmgL4XAPe0GQwJLGFgAqDcHNkJGJRIgfwOgRmI0oPA8BJ0iUTNgH4KDwADx0UBjZowKAAUBgceX8cEi4ADDNFTFigECwAiDxKFvQ8NCwAPBzoqgPeESMACDgICBQo5OcAqWAcBIAgNEACIFA8Cx0EIAQgAChkDJFbCDwlQDcowwEdpPItLwAApQLvA90AOgMRFoEdAzcSOwEWiBUDM3KXFSYjoDlCAqB7JjUTI+AuFUQUM6KYNTcjIAE2BRAXJ1B9lwggLLQCMJCYJARxWxhoACwYDIxZeyQQIBwkBFxUsE4UGAAIBBAcOCULBAAEBAPdGCgMTgD+zjwBTBch/gj4HDzAcST+/zMgQBAPPQHwh3BQAAgMFQNseAQCgBYUDOKmOATxoQAB/8IApAH2A4jAADHxKB8B' $bFont &= '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' $bFont &= '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' $bFont &= 'ACEYCAwhKzhcAWAJWgDEAxYA/CAADgAAJeFPKwECBSA+NzMXMwL+ABg8LP58thoQEAiMRPwgahAMIAQEEOCoABQCUwBg2AK/AA+k2IDWFQGDmTYgBA85MzEABAQcHAgoRBhABQK/NBUHQC0YCDQkFOFvAgAXAaA2AacCEuA4JqMHQaFuOwEyNzMhCCeDoccgrzM3FzU0wLATAMfAJ88MYEJkGBYALgRHPQw5GzsAMRQsFlYEMHgADAQzKQRREwIAEhgSIghQEDQgQFQIJBhgxQQiIJYEDGQ84tUdAYAYAS0DdAAUIEY6JeElEwVewQ1gJTQDMDcTFRYhEOJaFzMANSciKS0PBBkALxhkEV8cXyUAIBwEUB8ZBEhADBUzBERE4esDAHT+iAQ0ImKQAGwYJBRlATcEAP3oEAxoXFgkBgwgveAjDgEhAQIwAh0AGyEcQBUHIxo0oQUVcg6GBzaODAI0UE4MQR9EBDsASVYaJFEPRCYQAh0HJaAWgAQoABwIPEQUQUsYATATBQDwAP4DlwXwZCoRBRcDBxU2oDUzFRQHsXc3MlXhAQUzFxID4GOBQhAcAbB3zQQMKARJBABJHQQEPAMEKwAZBDgIWBgUICB8BRcfIWFkBAwAPQOXDP6ghBwBQIAuXmMELB8QAEQIWhoEAbD9wNwgHBwQBFBWECcFcRsDMA1PAiUAFXdQCFMNsEMjEg0wQoB9NwQ2BzFKIgenFCgAhBgcJBg7rXwAdFxoJExGMggAPjYCJQggDEgAPAQcLFg4ED8AZRiUEEgMCGwAAAP+0v+pAU40BCkwMylyY4AZAyJ2B5GEkTwRUGNRWNAFMygXNRKALQOAaTUnACMGCwEHFRAfAgHAcjQBJigY5AAJAwEEcDQIhAARb4kvCAhQOAB8SBstT124FQBzRAQEeTskBABEHDY6EAQpCgBCzv6yWEGjCABlXxABmAQTBRA8FCYqoFwBPU8A4UP99BLari4AGH3+/f7IBAQA/utLCHBAfwAAA/8Z/6wBhQIaaBArL3CPcUcUBxWWE5AcAhgnACs0NxBTP4EYwSswEcGFgFSwGDQnQAYDFRYVF+EB8UATCSQMkIBQPQwArr5krAEECAQANiIIOB9JBBoAFgQHIaAUJzUAMECQ/BwIBLUAAmgsKlIQ/uAAJAgfDcwIRwUAEBQQEgZEDPQANA4mIHgUXNQAEQdcCA0LHv6ARgQfFQgEkJCYAXE5AR4A0AKyAF0QfhNwFOCGgDQy8I0vA4B3olwSTBAcBBYQLgw8FFCDBAQeABIMFCcFDwKyAAYGxkokgASwAAx8EAQedhhkBAEwszoZAIECztAACgAWcicV8A4BDi8ge6BzoA+ADzsQhQgMACQMKggYFBwMACgCMRAEqFgEAAw4JLCdJBQWCBIGHvKGAv9U/4CEAMADmAALcB7XsQTBK4ITA8AEEoJHUa8hwBMXFSMGA68DJyA2SAQIJIB2QCwADA0LgFAMbJQAEAwYOEQoSI4AWiyIBAgDmAgAJGgkBAoaEC4AVv7AfP4pORQgMFgRDxxAZAxMgAISIgIaRBJwDIAUAP8BRANTMEfyIpIRFAewMlAAMasgigWQMifBETQTPwEDAhUwG6wUQHQIDCB0OJhHCeB1MCQAEhYYCHAcBGgAFQMDUwkjMsIAtAwMGrZlNzQACBQUCBQcMGCIATyEIEAsDAQwGIARAOcAeQOjslE4MhcCgAwBpuA5EzdAYQkHOA0vwJwQAWCCoyD+io6IBIAECHwczAFUsW0AAgAJAFoBpQK4TgAwEaMAbYFdFEFtN9AJ4LNQeAbQblAAKwHoJzUSQUwHwkxwcFAxABMVBzX1EBAsQBgjPUIyWNAdJgIa0G8YKAgQFxkCBPAeQBwMCQcYAA8tDcMIAk4QAATwKHknCAM5CARY5PAVMHoOEAAwdBAYATwLFQDIBPAclBeJFAz+ePApciUGAMgB4CoCdAAe9UxTB7ANCeRMAyORZyY1Ei4ADAwQ' $bFont &= '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' $bFont &= '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' $bFont &= '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' $bFont &= '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' $bFont &= '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' $bFont &= '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' $bFont &= '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' $bFont &= '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' $bFont &= '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' $bFont &= 'NjEyZFEgAWQzNgQxM2CIZXN0aW0gYXRlZAmA5WVpAGdodGgMdGhygmVkAXMLZml2ZQEUDHPgEG6EAQlhcgByb3dsZWZ0B9kiAXVwgODgAHLBA4MDEGRvd24jAWJvdIJoIwF1cGRuDCYBAGJzZQpvcnRowUH1YWwMaW5gHYAbAHRpb24LZXF1AGl2YWxlbmNlgAVob3VzZQ1gEIBsb2dpY2FssHFGCsECsBNsdHCmAGLwdAhTRtAYAACBAJIAV4AAASKDADOFADKFADRVhQA4hQA5hQA2hQA3VYUANYQANHUEMuUDNVUlBjWVBTN1BDIVATK9NQIydQRyAAIFxQIzZQjWMoYA1Qcy9QgzhgClAVo0JQYxRgeVBTKlCjTrxgKVBTT1CDR2DZUFYg0fEgoGDnYEEgFQb2Jsb1hjawcwHHEABdMAbFJmcwBydPQAdNCOZERlBVIAB2RrcgAJEGZpbGzALW94BgJIwBE3MwZIMThENTRjADUxCuMBcgFgIAd0cmlhZ3VKcHMAcvQAZG5zAGxkZgZhm2xlggMQYGnQbnZidbADdJEAowEgCm9wZW5EAXNtomngKmFjZXAmdsYAAANzdW4GZmVtRZAmBEEABXNwMAoEAGNsdWIFaGVhIUAHZGlhbeA2C21kdXO0J2UOuAD0N0YTQF50ADUAAgAB//8AAAI=' $bFont = _Base64Decode($bFont) Local $tSource = DllStructCreate('byte[' & BinaryLen($bFont) & ']') DllStructSetData($tSource, 1, $bFont) Local $tDecompress _WinAPI_LZNTDecompress($tSource, $tDecompress) $tSource = 0 Return Binary(DllStructGetData($tDecompress, 1)) EndFunc ;==>_bFont Func _Base64Decode($input_string) Local $struct = DllStructCreate("int") Local $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", 0, "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0) If @error Or Not $a_Call[0] Then Return SetError(1, 0, "") Local $a = DllStructCreate("byte[" & DllStructGetData($struct, 1) & "]") $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", DllStructGetPtr($a), "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0) If @error Or Not $a_Call[0] Then Return SetError(2, 0, "") Return DllStructGetData($a, 1) EndFunc ;==>_Base64Decode Func _WinAPI_LZNTDecompress(ByRef $tInput, ByRef $tOutput, $iBufferSize = 0x800000) 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 #endregion  
     
    Display embedded ico file in system tray:
    #include <GDIPlus.au3> #include <WindowsConstants.au3> _GDIPlus_Startup() Global $hBmp = _GDIPlus_BitmapCreateFromMemory(_AutoIt_Icon()) ;load ico and convert it to a GDI+ bitmap ;convert bitmap to HIcon Global $hIcon = _GDIPlus_HICONCreateFromBitmap($hBmp) _WinAPI_TraySetHIcon($hIcon) Global $hGUI = GUICreate("Display embedded ico file in tray", 320, 50) GUICtrlCreateLabel("Look at tray icon", 0, 0, 300, 200) GUICtrlSetFont(-1, 30) GUISetState() Do Until GUIGetMsg() = -3 _GDIPlus_BitmapDispose($hBmp) _WinAPI_DestroyIcon($hIcon) _GDIPlus_Shutdown() Exit Func _WinAPI_TraySetHIcon($hIcon) ;function by Mat Local Const $tagNOTIFYICONDATA = _ "dword Size;" & _ "hwnd Wnd;" & _ "uint ID;" & _ "uint Flags;" & _ "uint CallbackMessage;" & _ "ptr Icon;" & _ "wchar Tip[128];" & _ "dword State;" & _ "dword StateMask;" & _ "wchar Info[256];" & _ "uint Timeout;" & _ "wchar InfoTitle[64];" & _ "dword InfoFlags;" & _ "dword Data1;word Data2;word Data3;byte Data4[8];" & _ "ptr BalloonIcon" Local Const $TRAY_ICON_GUI = WinGetHandle(AutoItWinGetTitle()), $NIM_ADD = 0, $NIM_MODIFY = 1, $NIF_MESSAGE = 1, $NIF_ICON = 2, $AUT_WM_NOTIFYICON = $WM_USER + 1, $AUT_NOTIFY_ICON_ID = 1 Local $tNOTIFY = DllStructCreate($tagNOTIFYICONDATA) DllStructSetData($tNOTIFY, "Size", DllStructGetSize($tNOTIFY)) DllStructSetData($tNOTIFY, "Wnd", $TRAY_ICON_GUI) DllStructSetData($tNOTIFY, "ID", $AUT_NOTIFY_ICON_ID) DllStructSetData($tNOTIFY, "Icon", $hIcon) DllStructSetData($tNOTIFY, "Flags", BitOR($NIF_ICON, $NIF_MESSAGE)) DllStructSetData($tNOTIFY, "CallbackMessage", $AUT_WM_NOTIFYICON) Local $aRet = DllCall("shell32.dll", "int", "Shell_NotifyIconW", "dword", $NIM_MODIFY, "ptr", DllStructGetPtr($tNOTIFY)) If (@error) Then Return SetError(1, 0, 0) Return $aRet[0] <> 0 EndFunc ;==>_Tray_SetHIcon ;Code below was generated by: 'File to Base64 String' Code Generator v1.12 Build 2013-05-17 Func _AutoIt_Icon($bSaveBinary = False, $sSavePath = @ScriptDir) Local $AutoIt_Icon $AutoIt_Icon &= 'AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd3Z1rU1NTLubm5saAAAAAFZOSClTTkuPa2lotnNycrlgXFmwQjs1dUtDPjkAAAAAAAAAAAAAAAAAAAAAAAAAAJyamdiurq7/Pj08wDUuKW5/f3/snJiU/5WGdv+WgGv/fndx/25raP+Tk5P5ODErfQAAAAAAAAAAAAAAAAAAAADAv749ubm57ZaWl/9qamr/jXpp/45kPP+vekj/uoBI/6qVgf9dWFT/i3Nd/62trf85Mix+AAAAAAAAAAAAAAAAAAAAAKGdm4e9vr//eHh5/4BWL//YnGH/1Jpj/9aXW//Oqof/kpSX/4NYLv+YfWT/np+g/UpCPEMAAAAAAAAAAAAAAABfWFJ8yszN/7zBxf98b2P/t39I/9iZXf/amVr/z6R6/6autv+eelf/nWo5/6qimv9aV1SgAAAAAAAAAAAAAAACbGhlpqGXjf/Fwr//ub7D/4Z+d/+Td1v/oXVL/7CSdf+4wMj/nH5g/7uBSP+Xgm3/c3JxywAAAA0AAAAAJBoRE5OTk8+Jc17/tJFw/9bZ2//O0dX/wsfL/7a7wP+5urz/ys7S/5eCb/+9gkj/l3xi/4SDguB5cm0UAAAAAAAAAAKGhYS7k4Z4/6hvOf/Zupv/19zh/4iEgP+qk33/19TS/9nc4P+jmpH/p3I+/5uEbv+BgH/XAAAADAAAAAAAAAAAa2ZjiaWhnf+NZ0P/3rCE/+POuf+vsbT/lo6I/93c3P/i5ef/tK2m/5RrQ/+onZP/XVhVoAAAAAAAAAAAAAAAAFpTTByWlZTtkIJ0/8Wniv/jvpr/6N3S/+zw9P/n5+f/5ejq/66gk/+PeWT/2drb/25oY61nYFsXAAAAAAAAAAAAAAAATUU/ZMbHyP+nnZP/xK6Z/9zDrP/o497/8PHy/724sv+dj4L/ycjG/83Oz//g4eH/c25prAAAAAQAAAAAAAAAAAAAAABGPjl+q6qq8cPAvv+7sqr/vLGn/7u1r/+9uLT/29vc//L09f+urq7/x8jI/7y6uOEAAAAbAAAAAAAAAAAAAAAAAAAAAEQ9NzlpZGCemJaU25WSj92dmpfhcmxooUpCPH/c29r/zs/Q/93e3/+DfXmxAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHx2cRB+eHMSenNuFgAAAAAAAAAAWVJMYZmUkcJnYFuiZV5ZKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAA//+sQRAfrEEAD6xBAAesQYADrEGAA6xBAAGsQQABrEEAAaxBgAOsQYABrEHAAKxB4ACsQfAArEH8YaxB//esQQ==' Local $bString = Binary(_Base64Decode($AutoIt_Icon)) If $bSaveBinary Then Local $hFile = FileOpen($sSavePath & "\AutoIt.ico", 18) FileWrite($hFile, $bString) FileClose($hFile) EndIf Return $bString EndFunc ;==>_AutoIt_Icon Func _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 ;==>_Base64Decode  
     
    Display a transparent image in GUI:
    #include <GDIPlus.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <WinAPIConstants.au3> #include <WinAPISysWin.au3> _GDIPlus_Startup() Global $iW, $iH, $hImage, $hBitmap, $hGUI $hImage = _GDIPlus_BitmapCreateFromMemory(_Torus()) $hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage) $iW = _GDIPlus_ImageGetWidth($hImage) $iH = _GDIPlus_ImageGetHeight($hImage) $hGUI = GUICreate("", $iW, $iH, -1, -1, $WS_POPUP, $WS_EX_LAYERED) GUISetState() _WinAPI_DisplayTransparentBitmapInGUI($hBitmap, $hGUI) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_BitmapDispose($hImage) _GDIPlus_Shutdown() GUIDelete() Func _WinAPI_DisplayTransparentBitmapInGUI($hHBitmap, $hGUI, $iOpacity = 0xFF) If Not BitAND(GUIGetStyle($hGUI)[1], $WS_EX_LAYERED) = $WS_EX_LAYERED Then Return SetError(1, 0, 0) Local Const $hScrDC = _WinAPI_GetDC(0), $hMemDC = _WinAPI_CreateCompatibleDC($hScrDC), $hOld = _WinAPI_SelectObject($hMemDC, $hHBitmap) Local $tSize = DllStructCreate($tagSIZE) $tSize.X = $iW $tSize.Y = $iH Local $tSource = DllStructCreate($tagPOINT) Local $tBlend = DllStructCreate($tagBLENDFUNCTION) $tBlend.Alpha = $iOpacity $tBlend.Format = 1 _WinAPI_UpdateLayeredWindow($hGUI, $hScrDC, 0, DllStructGetPtr($tSize), $hMemDC, DllStructGetPtr($tSource), 0, DllStructGetPtr($tBlend), $ULW_ALPHA) _WinAPI_ReleaseDC(0, $hScrDC) _WinAPI_SelectObject($hMemDC, $hOld) _WinAPI_DeleteObject($hHBitmap) _WinAPI_DeleteDC($hMemDC) Return True EndFunc ;Code below was generated by: 'File to Base64 String' Code Generator v1.19 Build 2014-11-14 Func _Torus($bSaveBinary = False, $sSavePath = @ScriptDir) Local $Torus $Torus &= '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' $Torus &= 'FAmc/Pl39JJw91RZ+sc8gZQ9XPLTWpb6RIQm4PslqeoDkhgh5jFFKsEuZRDXHxAxlKqWGCGYAOwdyCOEnoHIID0BewjaplasuH7/L5smVYYEBRzGZJgYElwJsB6D3/+JJPgZvKk1BHJeUrHN0seCuy57uOTPxDEGf8bkEMCPgT6MA9LAG8yFBFpInvq+ipIiJESJIA+9gzkWeAYmAx2TEkl6BVzvwOXPPgbw4bsAelB5hWKpsbDYNhEk+CTAC/At/HEX4AqWP7USH+rSh7M9uSvlY+Cna8JSP89yD/ywpE8cWZI0nhmKZYpGtYG0aLCvXUmvA1nEYCdAF2Ux4B1IAjWRofIOZU0iEcLZQ+B6Btd/dQPABz9t44Q+HIZkWHISIAEux9L/g/hCLgrlT1vp7+VPltZkjwR/JY3SAfCHwE/EMbKBzJDzCHoWJEhYDkU8AO9XgK8TIiQDe4eCJZEggydAWXmENq/gFoW/7JuPoTz6Q9vZh26KyXBYyKQlI4HT/29H/f9B3D1Zgj6UQGHpz+DOMlfCu30OjCX4U0eKYcCXBCDAe7C7teaGb3r8FgncPCPhhngO/IYcghiylG8jhKK6goAMXH9QFNZjlGV1PvQKoTRynuGepwDe97sAN0HlDQ4LMiwJCYgACP7fPgjwXk5/yoXlTy4qu8LSn6WP1fqV5jcECMDP1zQCn0EvAM9gZ/B76TKLVjlJUAPNZCBySGIwKdoIURbFABk88F3MUDrQ0zr0Cp4srrKN5ZEjxZN7AX7nfQBfhgr4IREOOTJkc/+I8exKDIDRA/wBEuA9CIkjCPAdqEp+SQCSOFMdWjpY6mdmnwjh9/FcjtsE/A6tUfNneMwQhLyHOYdkyOzC1xpS4HHcMYvG7zKVTNoGnYo0tAGjrmQIbbvztB5vcWTS7jP9Wvn2QIZbRJLcRkWWwFnNQyWuUKDjpj0Uk5lIT7LQnbfEshWFdCETzdSXEPFMD2jNLVG94dXrVgG88ocAuvcA3L/fAl7WQ4LbPqSIsKgkuBIJMAPwUQyA34Hwm2LQ85qXDgM8qzzAFHkDdywzoM8tsGk77xgQ5I4cEvzmGEso3MeLa8CPgd5nYLSriCLwl2VdkoyxeHKBk1OCHH5bkoJAKwkBTXUaFRnMy8R9RrVt+pG484kNaYJ+EWYPv1s2KUdbi0/oB1+Bl9wOcMcB3xzJ5ymkHRKtVReNBFc6AvQA3iwzQANSyOl/Lt1Nqe/kTu7An3tP0PHg7ngC5DXw07HUAd+AHywQSw98VSvlS0cKD1wpS/T43oCsdiz4HGUv8NdVBFEGtKYUF97BlONhZsuRRMNg/QZ7BTD/a1sQJIEKDjSe64z0YiRCfhsS4WBFBMYMf4B3YsvZFoUELgj+g2nrAUYigC3hcxP8EhEsyNOKDK70zxxZ0pAAEvy4XQZSB5zu90tQ0tdIYEjDHqKSSKMs5rPd3xFeWkkjnhmhjMnA3iHJBslAlrpSX7ZwlV7BaBmSVgnRQFdxiLQIEfATLroY44RvAzwAg5JIkmFZy6MFJ4EIgt+TBRJoFAJ0nIY355gM9EJz5wmYHEIKedkjwG+AW1ZSp/SEGJQvDPiquUK99PcSaYQFAqDXCNhCDPYQLJnMdRCQwXkAssTJGyORDNitGOJYgX1B4j5pRCJMrQF40UsAtl4NsAkGwS875i1br7DgJHg9wM8iCf6Qg+AmAqyastLHLE7/dwzoK/mTi4CXS/8sr4BPa9b8UfB7GRQHfq2Njg7a8Iu/K2cTDyjlpVhIDiZFEyFIvkTJkFu/miVhRR4HxfXULMujhOpNElv1kbpg2XgJdy+BrV0LcPEpALfdVnXuD8crYFuWRFhQElBFGBLgz/GJracv6kAzAdgD5ELymLoBIX9M5ofJQOe8J7DSR+O2qQxqAb8EZQh8SQACfRlczwAexxPoYLsWU8AgKUJCkLWRIXEBNGd9krQq+X35z+2jhDyScQKIlG0DEY46EaURjXax0Q4aFoJ/' $Torus &= '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' $Torus &= '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' $Torus &= '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' $Torus &= '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' $Torus &= 'LljQjjThTSxna4sNAOJSaMUmw0ZukznCsig3MimmRljktaEHOCxJ0Nfq+Rr01FLfB9UU4AvobgPYB6N5gFnPrjqOLScSNMUDocWAf1hLoSRJUYYvDqCabyI1C76A/i7bg2821tS/YE62LEjQaW603hYPrMgfZ9rW0C6d4evTSWYmZhQ2zAPEMkQLYtEPTiYIPEmSdM5IEirJRpFAMTvs44FC64uW7MsdAYwnsJOHTJw3jpIAb3lTZkcRXpjn4mZQSeUCiR8rn07zsOHU/uTELDt2yEc2VY4d9vHApwDW6jR9vnyefuBdHp3aPX/5PuT8x7M2QQCzBjOB2e6ds5NDCxYcN/0xtdj0w5qI6Tn9BHraTS7NI5fZ1oiqGt/StVBMcEnFGPizebDHo6ZNl2ii5+Vu+NCOUlofP9u/rxVMZqj2wXfM751HEnSzuqIHSsy2QgIoIoINjAsxk9AwGbQoadImT0Cl5syiTRrFN5NUXfVSUVqty7P1J6UpdcYYlhlaCYoDw3d5PmTZ8fJ5yufL2/NppP1rHsAExdYT9Caw/0aUBD8PsAdv+dE5PQhXUlBRwBNCpDwxRFJNI8T7SUt3vakkOeLsJDlhjK9fMWcqz1+FBfCaYb39kuB9yPcj3xu4mWt0Qycd7QCvAylkg2IFOwC2LfUzCa2tU80+86OgPtUKj04gp1tVwjXyehyrXK6YX0to2DxNV52f56ct9cNabuYGULuE92VM4MEdLONY+N5L0+cgMetSJ0YSlZB6QhAqpuudoybCGkmAHL57LlLIj3dvvIGqBcM1sDc8+DA4PiNLT1/qh7Xc7BqAk/Hpn9MUFMcsibwjHyTLOCDoDquddDfrmBSiRev+5uXkCfCWNyaBfvPCm5kfBkjB7OZN5kudlgyRv0H3wtbn+Slnpum6pX5gy8koHtBZdmIYD7ANywwN8wzV+7YeQAlPYNe4IPjLlIYQ0hgoq+4TAHuX+rmE1kgCbafd3DdqMt4/mBEyRKHJuCAWsFEJhqL26Jdn6Zw6/x9uVubZFRwPsCcgC5+xjAdCG5YZMnOVJamIAaguQMQERIDEdrGdAb3vKYD9S/1cQmskwSqALXj723l/1DRp1IYEx9XDjscFZHmW5S/qdF6YLm7f/2VrfwNwUpEkPx4SYFg8MCworhlrfQ3VAqnFBHkB2sZryBvQfJboAnbuXS7ZITLKEOHJh4alSduC4zCLMCwuaKs0o+2TOp3nvSBNj1vqh7YcLMmyS1SanSalUFslmfmbtnjAmRaFHy+lk0CFk0AmG+Q8AMcHiepTMPDkUj+XmLXmzfD275ST6cYyRNLCuCAMjv0LkqWP1KIAUUlk5kPG7SmMCX6o07lgqR/apBtlhYo0eSs+ulXSE9BzjEkhslg8UJOutcoxcLq/igWqYDg13kA7r8CyqNSqeBTgqVn9oAW2YSS4WwbHtVqpSHAsrS0uIGusL4hIIvEikwvy7BWnp+mRS/3gJtmuBXhZP0kvownWB7JCDVIo9j7IBuIBV/KbWmGX/7cgd8EwQspM7GyCYiuFLF76M5sAnpnTD1sgayVBGBxLG9Z8gq9pqjSLSSLelpIoy4La46mpU96U5y9d6gc3qUZeADr5r+g0OS51pb+sJabnGUqhxvcQVpLRkC08TEtSaX/vEUx8QJIoNWvwDecAurqcyKCYrJUEHduQbnNNCkE9RmirNCNrqi+ISaLMlVwsidh984vIrSxKz+vkl56RpkdBc9uTrGH/kDfnBX5MeoHcP9c0eK5c0GRxKSTqB8yMQbItkKwQYw/gyKB9LXFqrgWMB3bq8slJDIrJWoHxCwAHkAh3tMUFZG31BU2SKMwSZRE5JANkepHsDY5Cb/CWqc4rl/rhTZr9PY2/28l/NeYFcrfd9Ix5JMF69si+JxDa3xDBlGeJJwYToGQC0DVgPYMhQjmjN2ndNqp4rBXwOM3l52RDS0eM8b9GcUG0tZos8RtalMYkUZplA1misOIsE428zAus' $Torus &= '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' $Torus &= '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' $Torus &= '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' $Torus &= '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' $Torus &= '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' $Torus &= 'Xz4Uf070Ex4rO+SAz5IHnO4HF8yCKeEr4JfuGu8B6O+pOUiJ+MZSPykOlj1VHHwa4LHbAe6mKVLdRISjWqwjexshmuSPJMqoBFjyVGjja1rqGxhi4xAh5W1KpSIZnn8xwIuREK9BQpyJ8DpyoOQP9gfAH3lIIz8wRwAGtfcEDvSUxwcBfFvauw7VmtoaodbvH0DY9KBQxQEUPlvuwhL/+wBbaeCrEbM9ZE3j/sc6urfJInl8NmSYSAKYV7XUNzCixaRRBs2kYPJ0MF5Y/SMAZ58D8PLjcMHI+iQ8fmQKfrLLKOhleV8bIXukp1oRgINZu+2Ou1G1TTMGkjjUm4saQeC2xgWP6wL0gT0A2zYBPHg3wKY7ALaPAXyy2BCGIfjlMCgxQsSAHiNDOILExEug2uta6hsYw0bxCGnDvtlGr7DuhQCnnQdwwXokBhLk+XjyaLxoFbVeTcSksbW5mcd6YImnl+a1a4atTUqU+hHYFq9uEC/tRjrpoq7Z9yTAo1sR/Aj6xx4D2NMdrwQNS/1w6BJ5PAR/eKxJFhUwnAwTVQ8wwhtbVjYq+GvySGzXSHEqwFHPAzgRCXH0mQDnIknOXm0D69V40brEXjcQK8zGtFsQOV1EyDSiY3ovwDNY0j+8GeDpbUiApwD27x1viBE5XHkI/HA/lEKxQbFioA8D5ZjMWbYEIFtuJCAbB/wxAmSR47ym+ZbWoYc44gUApz8bF8o0HYEkWYvk4Do01GbH4B+s0Q3hApbee1EDTNN5EjwYyG7DY308RkM3kKbfiYq/mAXgyeS4nCEJYsBvk0JNmaG2QbNGJcOyseVIArJxwB8jQpQAUCdIFhz3VRDHIElW2zjFTttcP0/DNfe7FkhZcM/jmpRC4dSlEtjhfps3CEv+JiK0eYJhZFhWtlxJQBYCOuYhQiKEniAkAW+HrbUbCQEV0D0JgmMQ2R7VVGS7zSOM6g3COEFuh54gBHxblmjZEYBsQcciXWCjB94LfgO/yFysyeildsQxLqX5ulScl0BnUsjjBQwSAmBpSRCCHWAQ/P3IdTHwN3mCMPuzbOVPaMuZBGz8QiToJdglKSTQm8ggPQUfCz0AQJwEIfgXggRN8cCo8UEohWLgb5NCsSzRsrZDgQRk4QuUpT4fk6BuIkNsv0kSQXAeoJ0EsxnUQA5AFSMB7zd5gCYpVDTsD4sLwuzRsicA2aFCArJQHuRD1jEyhKX/qHFAE/gXkgQx0If7MSIMA39TXBDuHzK2nAPjNvPdjyGeGWoLjtvA3yaLAAbBv9DZIT7eJoPajo0bFxwypb+0Q5UEbDEitJEhBHkuPidGCIDBuABgcUkQS5OGwCcroJkQo8QFhxz42Q51ErCNQoa2Y8MC4ibwL3R2iNfDAuQ2GXTYgp/tcCEB2zAJNEwWATR7AwiOASwMCXi7LUBua0oRk0FN0uiwsMONBGyhBIqBP+YJQgnU5g34OogcH9VickgeV5HtJlI0ESIkw2EDfrbDlQRsUv60AT88DhAnBUC89J8NAdjCGCA81lR5NiwgDusKDnnZ02SHOwnYRs0MNTWTaIsL5LHZ2LDgOLY9CvBD6XTY2goJBk16BoDhnmCUOoL5IsGodQVNGaLDVvK02QoJmq0N9G0eYLE9Aa/b2hGtlPottkKC0SyWGeL9SfIEfExBPJZYsYitkGB2NumeYMXGsBUSzJ8tpSdYsTnYCgkWx+aLBCu2Yiu2Yiu2Yiu2Yiu2Yiu2Yiu2Yiu2Yiu2Yiu2Yiu2Yiu2Yiu2Yiu2YvNn/x8H6goDo7OU7wAAAABJRU5ErkJggg==' Local $bString = Binary(_WinAPI_Base64Decode($Torus)) If $bSaveBinary Then Local $hFile = FileOpen($sSavePath & "\Torus.png", 18) FileWrite($hFile, $bString) FileClose($hFile) EndIf Return $bString EndFunc ;==>_Torus 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  
     
     
    More examples:
    Playing SWF file (source code is too large for codebox)
    AutoIt Windows Screenshooter
    Play MP3 from mem using FMOD
    Toolbar from mem
    Play a GIF anim from mem
    Load animated cursor (.ani) from memory
     
    Br,
    UEZ
     
    History:
     
×
×
  • Create New...