1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. UEZ

Beiträge von UEZ

  • OpenCl goes AutoIt Update 31.Dezember 2016

    • UEZ
    • 7. November 2011 um 22:20

    Ich bekomme immer Fehlermeldungen (Returncode 1). Z. B. bei der einfachen Quadrierung:

    Code
    C:\Coding\AU3\GFX\OpenCI\opencl_easy.au3 (38) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
    DllStructSetData($context_properties, 1, $platform[1], 2)
    DllStructSetData($context_properties, 1, ^ ERROR

    Gruß,
    UEZ

  • OpenCl goes AutoIt Update 31.Dezember 2016

    • UEZ
    • 7. November 2011 um 21:53

    Leider funzt es auf meinem Schlepptop mit einer Intel Gfx Karte nicht :(

    Gruß,
    UEZ

  • Prozessliste in Combobox laden mit Icons

    • UEZ
    • 5. November 2011 um 13:32

    Schaue dir mal _GUIImageList_AddBitmapEx - Example 2.au3 von hier an: _GUIImageList_AddBitmapEx() v0.80 Build 2011-11-05 beta - fügt ein Bild in den _GUIImageList Control hinzu

    Gruß,
    UEZ

  • File to Base64 String Code Generator v1.20 Build 2020-06-05

    • UEZ
    • 1. November 2011 um 14:13

    Kleines Update.

    Gruß,
    UEZ

  • RDP Verbindungen mit AutoIT - RDP Fenster eingebettet in eigene GUI - Beispiel mit allen Parametern

    • UEZ
    • 31. Oktober 2011 um 15:23

    Cool wäre noch Tabs zu implementieren, wo man mehrere Sessions gleichzeitig auf hat!

    Gruß,
    UEZ

  • File to Base64 String Code Generator v1.20 Build 2020-06-05

    • UEZ
    • 30. Oktober 2011 um 21:03

    Im Post#1 ist die aktuelle Version. Vorige Version war die 0.92.

    Gruß,
    UEZ

  • File to Base64 String Code Generator v1.20 Build 2020-06-05

    • UEZ
    • 30. Oktober 2011 um 20:44

    Musste noch ein paar Bugs fixen und habe DEP Check noch hinzugefügt, da ansonsten es zum Hard Crash bei der Base64 Konvertierung kommt!

    Gruß,
    UEZ

  • File to Base64 String Code Generator v1.20 Build 2020-06-05

    • UEZ
    • 30. Oktober 2011 um 15:35

    Code auf Base64 String umgestellt, um noch ein bissl an Bytes zu sparen!


    Gruß,
    UEZ

  • File to Base64 String Code Generator v1.20 Build 2020-06-05

    • UEZ
    • 29. Oktober 2011 um 23:00

    Kleines Update. Unter anderem höhere Geschwindigkeit beim Erstellen des Binär Strings.

    Gruß,
    UEZ

  • File to Base64 String Code Generator v1.20 Build 2020-06-05

    • UEZ
    • 28. Oktober 2011 um 16:20

    AutoFlip: nette Idee mit der Base64 Codierung!

    Hier der Code dazu:


    Nur sehe ich kein Benefit zu der anderen Version, obwohl der Base64 String kürzer sein sollte (vergleicht man die Größe des Outputs beider Versionen)!


    Vielleicht habe ich auch was übersehen...

    Siehe Post #1

    Gruß,
    UEZ

  • File to Base64 String Code Generator v1.20 Build 2020-06-05

    • UEZ
    • 28. Oktober 2011 um 09:40

    WhiteLion: genau, man kann jede Datei als Binär String im Speicher ablegen und ihn dann direkt vom Speicher auslesen z.B. Grafiken, MP3s, etc..

    Beispiel für Grafiken:

    Das Autoit Logo und der Merlin (Datei liegen unter ..\AutoIt3\Examples\GUI\) wurden mit dem Tool als Binär String erstellt und direkt dann aus dem Speicher in die GUI geladen.

    Spoiler anzeigen
    [autoit]


    ;coded by UEZ 2011
    #include <buttonconstants.au3>
    #include <guiconstantsex.au3>
    #include <gdiplus.au3>
    #include <memory.au3>

    [/autoit] [autoit][/autoit] [autoit]

    _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)

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $hButton = GUICtrlGetHandle($idButton)

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $Bmp_Logo = Load_BMP_From_Mem(AutoIt_Logo(), True)
    _WinAPI_DeleteObject(GUICtrlSendMsg($idLogo, $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_Logo))
    Global Const $Bmp_Button = Load_BMP_From_Mem(Merlin(), True)
    _WinAPI_DeleteObject(_SendMessage($hButton, $BM_SETIMAGE, $IMAGE_BITMAP, $Bmp_Button))
    _WinAPI_UpdateWindow($hButton)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    ;======================================================================================
    ; Function Name: Load_BMP_From_Mem
    ; Description: Loads an image which is saved as a binary string and converts it to a bitmap or hbitmap
    ;
    ; Parameters: $bImage: the binary string which contains any valid image which is supported by GDI+
    ; Optional: $hHBITMAP: if false a bitmap will be created, if true a hbitmap will be created
    ;
    ; Remark: hbitmap format is used generally for GUI internal images, $bitmap is more a GDI+ image format
    ; Don't forget _GDIPlus_Startup() and _GDIPlus_Shutdown()
    ;
    ; Requirement(s): GDIPlus.au3, Memory.au3 and _GDIPlus_BitmapCreateDIBFromBitmap() from WinAPIEx.au3
    ; Return Value(s): Success: handle to bitmap (GDI+ bitmap format) or hbitmap (WinAPI bitmap format),
    ; Error: 0
    ; Error codes: 1: $bImage is not a binary string
    ; 2: unable to create stream on HGlobal
    ; 3: unable to create bitmap from stream
    ;
    ; Author(s): UEZ
    ; Additional Code: thanks to progandy for the MemGlobalAlloc and tVARIANT lines and
    ; Yashied for _GDIPlus_BitmapCreateDIBFromBitmap() from WinAPIEx.au3
    ; Version: v0.97 Build 2012-01-04 Beta
    ;=======================================================================================
    Func Load_BMP_From_Mem($bImage, $hHBITMAP = False)
    If Not IsBinary($bImage) Then Return SetError(1, 0, 0)
    Local $aResult
    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
    $aResult = DllCall("ole32.dll", "int", "CreateStreamOnHGlobal", "handle", $pData, "int", True, "ptr*", 0) ;Creates a stream object that uses an HGLOBAL memory handle to store the stream contents
    If @error Then SetError(2, 0, 0)
    Local Const $hStream = $aResult[3]
    $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromStream", "ptr", $hStream, "int*", 0) ;Creates a Bitmap object based on an IStream COM interface
    If @error Then SetError(3, 0, 0)
    Local Const $hBitmap = $aResult[2]
    Local $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
    $tVARIANT = 0
    If $hHBITMAP Then
    Local Const $hHBmp = _GDIPlus_BitmapCreateDIBFromBitmap($hBitmap)
    _GDIPlus_BitmapDispose($hBitmap)
    Return $hHBmp
    EndIf
    Return $hBitmap
    EndFunc ;==>Load_BMP_From_Mem

    [/autoit] [autoit][/autoit] [autoit]

    Func _GDIPlus_BitmapCreateDIBFromBitmap($hBitmap)
    Local $tBIHDR, $Ret, $tData, $pBits, $hResult = 0
    $Ret = DllCall($ghGDIPDll, 'uint', 'GdipGetImageDimension', 'ptr', $hBitmap, 'float*', 0, 'float*', 0)
    If (@error) Or ($Ret[0]) Then Return 0
    $tData = _GDIPlus_BitmapLockBits($hBitmap, 0, 0, $Ret[2], $Ret[3], $GDIP_ILMREAD, $GDIP_PXF32ARGB)
    $pBits = DllStructGetData($tData, 'Scan0')
    If Not $pBits Then Return 0
    $tBIHDR = DllStructCreate('dword;long;long;ushort;ushort;dword;dword;long;long;dword;dword')
    DllStructSetData($tBIHDR, 1, DllStructGetSize($tBIHDR))
    DllStructSetData($tBIHDR, 2, $Ret[2])
    DllStructSetData($tBIHDR, 3, $Ret[3])
    DllStructSetData($tBIHDR, 4, 1)
    DllStructSetData($tBIHDR, 5, 32)
    DllStructSetData($tBIHDR, 6, 0)
    $hResult = DllCall('gdi32.dll', 'ptr', 'CreateDIBSection', 'hwnd', 0, 'ptr', DllStructGetPtr($tBIHDR), 'uint', 0, 'ptr*', 0, 'ptr', 0, 'dword', 0)
    If (Not @error) And ($hResult[0]) Then
    DllCall('gdi32.dll', 'dword', 'SetBitmapBits', 'ptr', $hResult[0], 'dword', $Ret[2] * $Ret[3] * 4, 'ptr', DllStructGetData($tData, 'Scan0'))
    $hResult = $hResult[0]
    Else
    $hResult = 0
    EndIf
    _GDIPlus_BitmapUnlockBits($hBitmap, $tData)
    Return $hResult
    EndFunc ;==>_GDIPlus_BitmapCreateDIBFromBitmap

    [/autoit] [autoit][/autoit] [autoit]

    Func AutoIt_Logo()
    Local $AutoIt_Logo
    $AutoIt_Logo &= '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'
    $AutoIt_Logo &= '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'
    $AutoIt_Logo &= 'VRLalf/9BssfYgocRIAIG0BB008QizIYIerI4IIdFE4BDlhrFzWY+DFi8AexU4AAB4gBKeiQdrWzHR1z4AIREBAFXtE95xqIQAtSAc/HR+Go7ES3yv9L+JZT2/KtXPz1v+r4L0xA8pRfKP8rgb7yRTpEHpQmwoubLoXSn94BCtjFkClAgQM84gY1WMMJjGCAV9TA4ASAcATAAWhQBKdnBGUQC7pQcXyABkSwDOogWZ7EVTOUAAjAAv2wbZuVBFYgXDkQeGhGfSzncuPHHSS4W9+2WV/gDOBXeSXIbJt3ft+AAMuwfk5XelBXBqTwCGNnakggAscgC86Vb21ABn9gBwFIAFNQduhwemXQDFLAgGhAgxMgAIEwgZWFD1aAAQiGRAggA/ADguVnfb5RgtpXhijYfSw4eS54eTBofg1hCjRYg6J3g2UAdegABXZAf1l3BlzQCItwAoIQBIQoCGugCUiYhAdwAaQgBe3/kIBSwAnowAdcsAw04Axy903t5AFY0AkGJWhhNmbqIn2CB2AjuH2EBhknyFuY8XhrGH5o2EpvGEUKYQ7cQCadwAV8gAwKEAvN0A7I4AjzRwB/oARQoAY1QHAosIw0IgLMsIe3F4B/QAZ8UAaQyAlF4HY0wA0uwHETWHM7MQjQhgd2RmAw4APkR33TR2DVd4LZt4opqHMr2ILi54Zj+BDv0AnbaAWrwAfEoAC60AwKQAoc0IOaMHA18Ae3F41JSH/0F4B2UApqUATNoAsKgAxz4AhdQAOd8AJA0CsxRG33gg/qlnOIpEiYx47r+GynGIuKB49qSI8umZIsCYcMUQtR/0ADVmAFLzAH6LAJuhALsxAD0LiEZ0AGsKcJopBdTKldpOaQDnkAfkAKxGCRxMAHJdACVrABAGAu7RZIV0VhIzABIDBEpBiC7NiSXnV5Z7iWrHgUriiTaymL9+gQyaCVnWAFL1YETjcHKHBw9TcKrHADatAGSEABTFlkT0kAdjAFB+CYB3AAowAFpLAJkjgLq9AJnTABGaBV6/QPOXdVj7cBbSKGIlh4qLhEqoiKb6mCr9iGdHmatJgQOYAEG6CZnQAF/lgExxB2pbAlR6kgf1lqHFCcxTkKo1AKVcADmvAISvCcfnABQ7ALs4CRszABG7ABLWACHPMrILM1NJQ2Hv+QBDQABExgmmmJmjPZloPWmjonBC4gl4MWm+k5mwiRA+XgDNm5Ac6wBkUADiWABDLCIgnSCDXQBUpwAazwCxfQoAp6Bl2ABFBABlxQAjOyjAoSCHzAB47ADRsQBSwgA/zwTUeUFB3AO18wCHUAZ4NABO+Dls+2koOnlkhEA++4fTTgnufEDicGi3OZjgSGAzHoELXwAuqQndwgAnPAB6QADoFAClB6DGtwCbfAIlzADEiwCl3QBauABDdQAglSA41wDMcApYEADuBACnwwC13QCVHgDHBgLt9EXwvVAQjAC7cADgDgDDCQAB4AgBQagAPrkG0AaXYOJwejM6oAnjuRAERgUKoA/zhsYEYEGJAAgvdiJ1bzczQAiRowcGD2iRAAYoABzqAOUbAAAb8wC+jACQoAIAV6cA0FUAAA42AA1EAFwIQAMwxgAaVyNDoA8Ayw4AYz8AkABXANemCVRcAAB7vADVGgDi8AYALm025JNQYAI8CjDwAGLKAAAUdRBzBAWoYAegc+UYrtKJIAJCAE6Mgd7XQAL0LASb1lWTQAsA4Q5qPzCaQARMVgNskQOfAADuzgDBMwATQAoKS8SAftsGkA+zYPYfBREvAAN9FgC7ZQOB8AIAH3EAph8AYAhGAAtkYHUmAAnW2qDi7gA2AA4EJFImw9dI4AgXBQvoAZ5zQAAXtgqDyhAQEA0A/Udqhk+FMASQACkkSnCfYAGx4gT9M6rjsA/9APYwOb7JoAGXgBBP0weQ8AsQ8Z0AL0eqQA/rkJJ3AN7WAAALLmrzagBZQAILAEa7AIGwoAW8CwBvAJ12AAkcEqAsswAc4A8AJV'
    $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

    [/autoit] [autoit][/autoit] [autoit]

    Func Merlin()
    Local $Merlin
    $Merlin &= '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'
    $Merlin &= 'OZ54QIDDNkMgcVa9lHDvBwQEII8AgJTwgB0gM0LrCTzIYIo5eqSwRAgQpPKKBFNk45QxU9grQSpePNBAAvYAckAJhgT/Me0G2DhhxwMQXDGLEEdssccm1dSjwAWAOJWP1GsHAUoKLOAiAAGAfAABDzFggI0VL8hTwgEh5KIKOCxgkkwwCqzd9lD1XKG2AvXU0kEf65RiD+d7LwHHCBj8wEPPPYsgzO6DYOLwvb3o1AwuqdwbDSCLALNFKJvrvXcKJzABxxQ9AwKIACLkMUwfHUACgU8SQBA9TJu8fy8BS3BRxg0JGJA38iFIhCAYcADzAYIA9hDAEgrghlgIIgQPs9cUQPASKDQAEK94xQU+IAB9+EEK+gjAA37nPa354AAESOEBE2iAFKTDBwnImk8uIAAtgOsk14DBGlpggFQcwAAzGEIB/xjAgAgIIAQh8N4Bp2APbqWQhQxoQToYIAAIlGACj1jDGm6IQxjokAcG8MCqBlCAASTgAYK4QhLNRwABuPF3bTTAAwbgh0dM4AFQgMYadMhFlCTiC87gRTh80AI/BKAABQiACEyRDDWu0I1uTKEADGCALWjhEUawBS9EsQYy9BEliDhFIVCAAmV8oQD6KEADFAkJVSgiBJKkJCTdKII9uIALjyDDKNsAh6y0hgp0gEMDBnCNRNwgFLmYxSweKUsB5AN9odCDC4iQDnLg4DiKIgoSspCBFWQgDvIgphkSUYoOzCIZv3OjLEUQDEWAAhQdWAcR4ODNFVSAHKgaChLekf+BDNThFqMYwASkwYYOdEAIwRCBOilJSXsoQhUdoAEQhtGINERhBbdAgVOQgALWkCEDUBhAA1hAAyEIQRiQZChDH2AARUSUBtJoRBTYsYI4oGA5Q7GGP7LzhSTgogAzWMAiPOEJA6T0AUhl6BKEIQSJSmEP7BhCGvxRCKdQog47hQY0GABULTTAAyJg6UojgNQHiOAFQtCDHtjAg058oQ7kSII3skKJRtAiCZxApBa0UIAEkHWsESArS9vxggSMQg9wSActCqGLuc7FDsDgxDV24AO+BuCvcoxAAjYb2Ah4wAMJ8EAlYjEEdXDiHogIzDDigYw+mIEFPkikX8u62QD/bPa2tdVHA4aADH54ZC6IYEE/+vAJcLghtgywLVKXkIAAONe5t3UuV4fAiXT8di6XQMYnzrEFNPA1uZu9Ai48EAB93OC5zyViAaSgjk5cNytg4IcdzDAIHlR2iLb1QB4wUQkSVGIR50UvA8iohXLkMjAqSAcXCmAGO6DBAmVMrn5pkIsjAMETAZYuVwtQYGc8IjDGMMEEGpACalgAwikYgD5G4QkgsIEGpbgBEZMbAPVy2AgWSAeIRVyACczAAnwtgDxKAYQOsOHIeZDxjGes13RYAFdzMYQFJkDlGfghyAyoxB7McGQagKMS+mBAmJkM1HQYQQsI3usMZqCFKyNyacCyWAQbznEEM7hAyWSeQJuvoALNwAIKUNBCC6b85hvAgQ2J2MEO5LFkG0/AAipILXNOAQYLxBaRN1hEOxqgygWseQYNaEBQfZCCFHxIBW8otTwYPYAUGGITIIi1rGP9BplB6da4TkhAAAA7'
    Return Binary(_Base64Decode($Merlin))
    EndFunc ;==>Merlin

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    Func _WinAPI_MoveMemory($pDestination, $pSource, $iLenght)
    DllCall('ntdll.dll', 'none', 'RtlMoveMemory', 'ptr', $pDestination, 'ptr', $pSource, 'ulong_ptr', $iLenght)
    If @error Then Return SetError(5, 0, 0)
    Return 1
    EndFunc ;==>_WinAPI_MoveMemory

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit]

    In diesem Beispiel wurden die Dateien mit Kompression gespeichert, welches keinen Sinn macht, da durch die Kompression die Daten Größer geworden sind. Daher ist dies nur ein Beispiel.

    Abspielen einer Wave Datei

    Spoiler anzeigen
    [autoit]


    #AutoIt3Wrapper_UseX64=n
    #include <APIConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $binWave = Wave()
    $tWave = DllStructCreate('byte[' & BinaryLen($binWave) & ']')
    $pWave = DllStructGetPtr($tWave)
    DllStructSetData($tWave, 1, $binWave)
    _WinAPI_PlaySound($pWave, BitOR($SND_ASYNC, $SND_MEMORY, $SND_NOWAIT))

    [/autoit] [autoit][/autoit] [autoit]

    $tWave = 0

    [/autoit] [autoit][/autoit] [autoit]

    Sleep(2000)

    [/autoit] [autoit][/autoit] [autoit]

    ; #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

    [/autoit] [autoit][/autoit] [autoit]

    Func Wave()
    Local $Wave
    $Wave &= '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'
    $Wave &= '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'
    $Wave &= 'vf2nCz/ybAWZA735Cwc79lQIjgFv9NkLe/pdAQoB3/gkDRb27P6ECLf36Qb4+HsCyAcx8iAJS//W/AEFkPZDCyz8ovhHC2r4UARi/bn8pQtn8+cDpwRV+doGLPfLBtgCOPQKC6v7NgD7AZT4Vgym95b9/wj89x8GOvohAWQIyPLRB4QABPxYBQP37wmz/dv3CgtC+TYDlP7m+3ELovR2ApAFE/mGBiz4VAXzAzH0JArV/Cv/wgJ3+G4LKflr/E4JXvhIBXX77v/JCILzgwamAVb7hAWU95sIGv9D96cKKfomAqj/QfsVC+X1HwFOBvr4FwY0+fMD3wRX9CsJ9v05/mIDg/h0Cpz6Z/tzCd34aQSd/OL+AglW9DwFqwLN+owFPfhNB1kA2fYnChn7IQGWAM36mQop9+L/6AYD+Y0FPfqxApwFofQnCAz/Zf3aA7P4bgn6+4z6cglz+YQDs/0A/g8JP/X9A5ADavpyBfr4CgZzAZz2igkL/C0AZwF/+v8JbPjE/lsHK/nyBEX7jgErBgz1HAcRAK/8LQQE+V8IQP3X+VAJHvqeArD+SP36CDL2zAJbBCr6NgXB+doEaAKC9tkIAP1P/xACWfpRCab5wf2qB3X5RwRA/IsAlAaU9QwGBAEa/FwEbPlRB23+SfkNCdX6wgGU/7T8wQgy96sBBQUM+uMEjvq7AzkDjPYVCPL9hf6YAlT6lQjX+tv82AfY+ZMDL/2s/9MGMfb/BOMBo/tpBOr5SQZ9/934rwib++oAWABI/HEINPiaAJEFD/p5BF37tALlA7b2Qwfc/tP9/wJt+swH+PsW/OUHUPrbAg3+7P71Bt/29QOuAkv7WAR3+kkFbgCY+DcIZfwiAAMB/fsECDr5o//6BS36/wMq/MMBbQT+9mgGu/86/UcDofr7Bgr9cPvSB9z6IwLZ/kr+9Qah9/MCXAMU+y4ED/tSBEQBc/irBy/9bP+QAc/7iAc4+sT+RgZk+noD8vzoANcEXfeKBYYAvvx1A+b6KgYI/ur6pQdx+3EBkf/F/d0GaPj+AfED9/ryA6n7agMAAmn4DQf5/cj+AQK8+/0GM/v5/XQGs/rvAqv9KwAhBc/3qwRDAVz8hgM9+1oF8f6C+mAHEPzGADEAYf2sBjb5GAFtBPP6pANJ/JECnAJ6+GgGuv40/l0CwftlBiL8Sv2MBg77WwJh/on/RwVV+NID7QEO/IEDpvuNBL3/O/oIB7L8IQDAABn9ZAYC+kYA0AQF+0YD6PzPARYDpvi8BXH/tf2bAuH7yAUA/bj8hgZ9+8kBAv8A/1kF5fj6AogC3PthAxj8ywN0AAz6mwZc/Y7/MAHs/AkG0/qG/xMFNPvaAoX9HQF3A+r4AgUhAE39wAIT/CIF1v09/GcG+vs2AZj/jf5QBYX5LAIJA8L7MwOR/A8DFQH5+R8GA/4E/5EB1fyhBZ372f5DBW77aQIe/n0AvgM/+U0EwAD3/NQCU/x+BJf+3fs2Bnv8qAAdADf+MAUo+msBdwO5+/UCE/1bAp0B/vmZBaf+hf7gAdP8KwVj/ED+XQW6+/ABsf7z/+0DoPmYA1YBr/zZApv83wNJ/4v7AAb6/CQAlQDn/RMFv/q5ANwDsfvAAoL9uwEdAvv5JwU2/xT+LALE/M8EEf2u/YIF7fuWAS3/af8tBOf5/wLbAWj87QLM/FQD8P86+9cFY/2z/wcBlP3+BEn7FwA2BKn7kwLo/SMBlQL++bYEvP+s/XMCu/xsBLz9LP2YBSj8NQGr/+v+WQQ++mECWgIr/PICDv3BAosA/fqdBdf9Pf9xAVX90wTf+3j/ggSz+1QCV/6QAP0CEvo4BEUATv2nAsf8AQRj/rT8nwVz/MsAIgCA/nIEoPrFAc4C//vmAlf9NAIcAc/6VQVO/tD+zQEn/Z0EdPzj/sAEyfsNAsr+BQBSAzn6tAPJAPr8zQLh/IwDBv9P/JAFy/xgAJUAIv51BBL7JwE4A+L7ygKw/aIBoAG0+v0E'
    $Wave &= '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'
    $Wave &= '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'
    $Wave &= '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'
    $Wave &= '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'
    $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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit]

    Abspielen einer MP3 Datei unter Verwendung von Bass.au3 / Bass.dll

    Spoiler anzeigen
    [autoit]


    #AutoIt3Wrapper_UseX64=n
    #include "BASS.au3"

    [/autoit] [autoit][/autoit] [autoit]

    $binMP3 = MP3()
    $tMP3 = DllStructCreate('byte[' & BinaryLen($binMP3) & ']')
    $pMP3 = DllStructGetPtr($tMP3)
    DllStructSetData($tMP3, 1, $binMP3)

    [/autoit] [autoit][/autoit] [autoit]

    $bass_dll = _BASS_Startup(@ScriptDir & "\BASS.dll")
    _BASS_Init($BASS_DEVICE_CPSPEAKERS)
    $hMusic = _BASS_StreamCreateFile(True, $pMP3, 0, BinaryLen($binMP3), 0)
    $song_length = _BASS_ChannelGetLength($hMusic, $BASS_POS_BYTE)
    _BASS_ChannelPlay($hMusic, 1)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(250)
    ConsoleWrite(_BASS_ChannelGetPosition($hMusic, $BASS_POS_BYTE) & " / " & _BASS_ChannelGetLength($hMusic, $BASS_POS_BYTE) & " (" & Round(_BASS_ChannelGetPosition($hMusic, $BASS_POS_BYTE) / _BASS_ChannelGetLength($hMusic, $BASS_POS_BYTE), 2) * 100 & "%)" & @CRLF)
    If _BASS_ChannelGetPosition($hMusic, $BASS_POS_BYTE) >= _BASS_ChannelGetLength($hMusic, $BASS_POS_BYTE) Then ExitLoop
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    _BASS_ChannelStop($hMusic)
    _BASS_StreamFree($hMusic)
    DllClose(@ScriptDir & "\BASS.dll")
    $tMP3 = 0
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    Func MP3()
    Local $MP3
    $MP3 &= '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'
    $MP3 &= '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'
    $MP3 &= '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'
    $MP3 &= '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'
    $MP3 &= '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'
    $MP3 &= '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'
    $MP3 &= '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'
    $MP3 &= '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'
    $MP3 &= 'hhpYYQWXVnmGM5i5Ptp29agMOLCdryxb+7/9HZ46hSerinYwAApSXcIdyffua11xPNI9O/BIBAH5Wop7d1d8ububz5is6FuR0lXfoLhUvUx3Lol/6M2eWx1aMTgxswsIFHQj/IgUSAwm532GO9RBeP0SYwpUWsNqwv/7kmToggPSYtR5+CxAVWx67zTFkA4hjVXpJLLA14zsPHAKiPxaVibCQE6tj7GXQU86f/eorLKsqAAAAABTDjNjXW5sii6aS15r8oAUgMwNQ+1G+pet7J0Wu5RPUKZBVbXX2s5epayIcjeHRcY7zCZhVt2t9v9Slqtia1YZUoOVQ6urojtsplujxQX/rRuPx/zoenL7gLV1/mNbSpIrM7ZP03dOACkmoneDHea6MZcry8zf/lgL5FoJo4HJvTXmDLrR9qqiI8RbhVnbRqtdGqyGoUl6m3bOyqx0skeQe5laQroZUq/fq061b07+sY1ljHMsKDcROZPAeVS0VM5TgAgghBOibrpzHVN1NJvRv/3hsWmocl2K05Txd8hHIApV3rv23dW3IKk8U/qjjvNsd9f/SW6hGAgMdUcOLi0mP1WDF9EmFP206OQQ7eVIUlVUhFSlCcq+hwIQVEynhhtm0VYQecdC8S//QBXZni7VVSVKorMjHCQm05KZmHOjCXh28aOFGq2Qp9SKrWq0xjsdPqquRDUWhwkjuyMc6h4aTpzTMK//+5JE7AADV0zW+WMusmsJWq9JZZhLSWFj5ASyoV2lrDyyilz6R36uck+9bT02sZX9CrVbZS8MUa0kzFbDAAkBN2bgDKyjZqElpc2an+QAMCDJpVDpKtLXe5tbDA812Y/kZWehXHMDa412dpDKHK9JgTe1wtAYRv8hASKr4Q5QimCFKUhitdp1qaYSoVnf5V22T6tU9EoiPnejv3ImHHqO0b/fYglVQcd8aQFnJUXspLrVsJO7UoRpqnxXb26AgWbSfE5n3+TphNYS7cpecEFv7Ujxu3/+xk/uSUQRaocEAnK2RTMvsahKiRotHC0o7AI8SioKKLEkGsTLuAAAABSd4Mz0h1g56VP5OAZxbY7FY9C9W3uigKGpanojOndDVIRKG84fIfdDlJ8v/6ls5UdUQccpxo8xVQofckmoSlSSO1lp1es3Hx79UxEgcYpVZmlDAAAABKlBcGVbu9rKatjqz27VJNey5uCruqc6iWiQYr7/NMy4xEi0bHgtHgbq368jlZ/fecY1tAibNV2BFsRT/NjL9/5CAj/t5H4peGAlmphA//uSROcAAylJV3loKepnjLrvGUJsStD1ZYSUZbFXoCt8NpWQbbFdRsuGeW7LTcyN/hyGU8ylP+ip/8MlIkPy7byqocM1VEVVAAAYCRRd4CLAARWmbn/yoXjqpCvp8f/DpqPtOCHRe1eqdtVUZc++qmP1M+P2KCH///L/88NN7fEhgyN1Iu/Hn4KcJP//+sf9XSjeB3q/rj7zV/cYlxxJpqLdAAAAW27xFWmySa2TOLdNFdHqMANAwxK1TLUqyzPzHyZ2PCsfaVsoJWRbBYsaGFZHBtqpNN6OsrPVs2+y1mKcyBQhjRUQIZDGRkfydqIb1K2UGv161rRGypyuY+jMH1wZRsOrOdoSAADITbm4nsZqy6l0/oRg+ed8vVB1SZg3LRilTCw0IwUrkStAiWzMe44XMgiLB4eJAvSgWrPQEPQm/oqUV2N9mefKMrVWiodhAAABKT2Gr2eZwLv3uZ66tWF64+d8gBqGo9hRQYE7mYQPVkGQGquKGo6vZXNEpLrAXlNnOXncjfd9nfDTI/ezLdU2dzFlUYLIxiDo7bM9mlRwyv/7kmTpgAOxZdR5jxxQWSO6z2ArDkzFl1vmoFLBHIgr/LGoGMRHdyqkYrdjImr6+bn27IxLCajuo1VlhYABAAtmXgXSV33QbWZI/mJRpdN2doYKX7oxUVVay6IvU5XTLSCPCFZrEqhGfhn2BO5TP/7W3vd1OVXAgwo1UKQT'
    $MP3 &= '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'
    $MP3 &= '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'
    $MP3 &= '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'
    $MP3 &= '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'
    $MP3 &= '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'
    $MP3 &= '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'
    $MP3 &= '0sOJm2qtkWsgpt4x59zLVCUpt7KUFe0/pSTPqQvjG1pgwSaoY2HHLIhuprEt3pg7Uk8HWsCdE5JbAKqMeA23KwD71AF6hf/7kmTwACMRSErTpTVgWKe5JVcrggwc9SculPUBbB3kFcGikFe72XovRY7df1pIj5FcZv0Vi2cqOtqOzjBIAhfoqqTYyfXJjyXhQULnDIvk7wsmMsK0NodGewZSOA4gawLrvVz1F9YAISAAfPCG9EOzFLzD6GkpNVceVqvalnvf/W2VPQlvNRQde1iXNszue3U5qSt9ip/CI2e1CCt5tTdbv8tR63jK22TcpjGI+q27a9X0IjuoiGO2XrOqdGBvmd8iKlKulodF9esoJ9AkAe9j1HG91scbl+rS5fX3hn+V+5vX0jOYbTpEQJTY1qlyIKYamg6n92jF+7ASE4+SZGVJ22usMF7fQWlOo6xebFpmZkzGYVd06iqYZ+JMjvSZfWeKy8/f/NFaHX//iFrf/6h9aw0j4J4sH4+uugBAAA7ZAwIMFmJZLqPNRYFPiNqDE982nh6qigxC9CxLDkd2NGGiz7SYoTssDdLQipOZW6U4hQkVfhBVMtsiYtBOZH2zn0s1TP/uf3/zsw0YEflwGXtUsqf4YOMYFAalYLNMhE+NY5f/+5Jk84AC/TtJQ6wZcExHeYxQo6cM5Z0hDoxVQbIxI4HEDph5bnWgUBIQAAyaLeRA4ap3OGrVrMEEt1LUzM9bzRGK9UptkV8s1hkrrM/oJDn80M4ZOsNzLyzuY8tKbHfpM988lIq2QwXc0x/zaLKCEUe6W3w5I2z62v7aRYPgcjC+HAU7MNUXsL7OtvYkCtt1z86t5nrUcqhLRoL40Wb580eBiI4StlcyU+ny5n5aFutXMKbE3oxp9GyK8pkJqeDUNrBIJsQKmhUS4adVe4ygVwKH+4eBMW37WUuLCyAQDWAv5+beeVHslrW1T/43XVM1hbk56FWz4PJ8nNsvk/Mip0qyLkSmexdIsmjKWezUxBmTHqZD7/2+uZ8yjCplSOJurpEdXRPhzPLUihPcu2f3/7qR+qwhThP7n6ba33ETiJIAWFL2lQTGocRmcxpWCo9IiBVyScU5GIsJQ5pVtYVB4+klUhpYXpS67n1vrn6t5uxXG8KTwWbOr1KVMFkb8f0ynvzvRNhvKzZuHdOO9sVMZ7J326/99ebCFY2u8/iLV/9T'
    Return Binary(_Base64Decode($MP3))
    EndFunc ;==>MP3

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit]


    Man könnte auch die Bass.dll direkt vom Speicher aufrufen, so dass Bass.dll und MP3 bereits im Speicher liegen, aber das würde den Rahmen sprengen. Irgendwo hatte ich die Version der Bass.au3, die die DLL vom Speicher liest...
    Vielleicht gibt es noch eine andere Variante, um MP3s vom Speicher abzuspielen... ?(

    Font in GDI+ anzeigen

    Spoiler anzeigen
    [autoit]


    ;coded by UEZ
    #include <gdiplus.au3>

    [/autoit] [autoit][/autoit] [autoit]

    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)

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_Startup()
    $hGfx = _GDIPlus_GraphicsCreateFromHWND($hGui)
    $hCollection = _GDIPlus_NewPrivateFontCollection()
    _GDIPlus_PrivateAddMemoryFont($hCollection, DllStructGetPtr($tFont), DllStructGetSize($tFont))
    $hFamily = _GDIPlus_CreateFontFamilyFromName($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)

    [/autoit] [autoit][/autoit] [autoit]

    While GUIGetMsg() <> -3
    Sleep(10)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    #region
    ;Code was generated by: File to Base64 String Code Generator

    [/autoit] [autoit][/autoit] [autoit]

    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 &= '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'
    $bFont &= 'IwAT2dAKAweBEjATI9BNEChlUDMzAZATNaE50CkVARAUNTQBBp5KCCAEX4EwFDAK7CiABARxd/wbDcBvALAEOAh8cAQEABQIFQsDwFwwIGAWGhj+ITQERBgEFBDQIQEADFkBQNcsGAo2BPB4FAQQVnJB/+T/fgIgnAQOACGVTRAFgeFLNTQlNjMHchIDwKPhKBAlJicBBACBk4T+nIZqVgAOARCfHYTSSgAEQJzkghYQ/gD8bAQEDoSWugAU/p/zVFAcjgDGWEiOwhQUKQAH3KZ2TUsBDAyMNOEPkKETACYCiJ8EJrBULwA204jAFAMkNzYzgIjgBiQWFxAAFSawBhUiH2AjsVWysjC00FQzNQMIBxczkF6jCBUHADQBB4keFgjkAK9FJDHTxjo4gCj+3MYuBwXAdCAIJFAtC5BpWAwCBHBlJlBe/vbXAEUgDCmDhEy8ACQ8Uj46Fj99ADgcBOAEEDREAIAYNDJq+X8UADwVFSQk/cQoCBAiElBfAQAwAICfArAEgwAa9iRdwEszgWghG4AjL+EsqAAEFGAETBTEtQB7CIKWLKwMTgAiDGQJBIMSLgAkKv36hAyABAAMSBwIWHCOAQTmlDAFNP/oAoDQBDwANbEWFQEFMR+FwBYnQEATNSMCE34AJjUjFQIDBxQd8bATsAEBQ/FJNjMCEGQcXAigSEEXBAAEYAStIxwcGCAuNigILBAgFEwACAwEHwlIJScAOl5gJAQ8MP0AtLAUsVsEBNwAOBQYDMQB9AQA/mAEGGR4GAQA/pz+qAQMKTsASgKiIFwInPgoPPTscCCzEJ3bBCbdMIexCQcVQFIRFVQUEyGYA+AJIwAJI03AmBAACSFKHQGydztWAVCIUsYXwJAVEDcygDUDEBMBwxigFwAsFDwUiS8QBAAENBgMCBBoCBAQW00QcJqEJBQLgK6wpRIwKRaSBBQAFEgE3RBsFAQA4/7bFKD+/HQAAYz8lAj++/4AaUxEDAF2AaYACBAlmxAcCAiAYZcYEAQCCuAsAFgYDBS8/chEQAG0AU8BSfI/FMAAkwNMBCdTgzEkf6F5hNaxNfW69JFyVKFfIwA2AbgQkIB01ABzfeVzHGyCbgCJMz1booIwtAA9SxC8iFC8eABwUCpWBDUEJwAPfYai6KhQvABKWnOVhIwIdADEZT8cvUMcuAB6biDEgEgIHAIw8i3/EACXAvBABBsAHwAz8F4ANBMgo6wTUt/BmyInTDMWsG/jdiUHMOA3bCYvcI2AACRQN3AKAQIXMIN4AQnvgP4CcEBHFgY8EHpuAByyIgQihrxgADLSjAEk9NNpAFAwECQcBAQ3AC0MAWz+yIKKCLgBSPBRBBtYPgBSCIOV/owIbADNHygwHBwgfwDBcRcMKQc8sQCHhAzLYTgEOwC5aI9tXUMY/ggMbGwyOQH/9f/ATQUVBIEAIEExQPwRFLC8ACch4kBTQF4ia/3R2wMTDFAV4EFRFeFeYxV/ACrDX4AhEVfQIeAigDwiAAc1NgFNz7GYAPx9s1o6gjYIAA9dICAcBCJOBFkjwI/v8QhZRwAQlIhcAQBYVABgQDw8DKKmVABscnpKQlUjBAA3GQgEFk4IMwBhlDQc/phdSwDZW1kEgYyN/gD994neZix0KABYBBgEMEgwCAB4PAgBcBQYaABoZO2nMEwIOAC4dmoYaVNIGACgbBAQkLRPeU6/AFMpRAFJbxAEAKAIvAAAAv+WAAAkAxID5AA+AABDAAATMzIXABYVFAUHFQQXABYXFSYnJi8BABUUFzcXMwYHACInJjU0NzY3ABAjJzczMh8BABUWMzY1NCcmACsBIh0BFBcjACY1NhMUFzUjABYwjtJY/ugEAAEbpVIeeKxkAJAUIAwEBAkPADkTlGQBLxgMAAQMIBgEAQfwAGjAfASEVARkABrGQAQD5HhGAE55mwRQP5lGACoEcFA4JAQQAExYCAQYBNgMACQUKAYSAaQMAAR4dHgwil49AEdcNAQb'
    $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 &= '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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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    Func _WinAPI_MoveMemory($pDestination, $pSource, $iLenght)
    DllCall('ntdll.dll', 'none', 'RtlMoveMemory', 'ptr', $pDestination, 'ptr', $pSource, 'ulong_ptr', $iLenght)
    If @error Then Return SetError(5, 0, 0)
    Return 1
    EndFunc ;==>_WinAPI_MoveMemory
    #endregion

    [/autoit] [autoit][/autoit] [autoit]

    #region MemFont
    ; #FUNCTION# ======================================================================================
    ; Name ..........: _WinAPI_RemoveFontMemResourceEx()
    ; Description ...: Removes the fonts added from a memory image file.
    ; Syntax ........: _WinAPI_RemoveFontMemResourceEx($hFont)
    ; Parameters ....: $hFont - [in] A handle to the font-resource.
    ; Return values .: Success - True
    ; Failure - False
    ; Author ........: Eukalyptus
    ; Modified ......:
    ; Remarks .......:
    ; Related .......:
    ; Link ..........: @@MsdnLink@@ RemoveFontMemResourceEx
    ; Example .......:
    ; =================================================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _WinAPI_RemoveFontMemResourceEx($hFont)
    Local $aResult = DllCall('gdi32.dll', 'boolean', 'RemoveFontMemResourceEx', 'handle', $hFont)
    If @error Then Return SetError(@error, 0, False)
    Return $aResult[0]
    EndFunc ;==>_WinAPI_RemoveFontMemResourceEx

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; #FUNCTION# ======================================================================================
    ; Name ..........: _WinAPI_AddFontMemResourceEx()
    ; Description ...: Adds the font resource from a memory image to the system.
    ; Syntax ........: _WinAPI_AddFontMemResourceEx($pbFont, $cbFont, $pdv, $pcFonts)
    ; Parameters ....: $pbFont - [in] A pointer to a font resource.
    ; $cbFont - [in] The number of bytes in the font resource that is pointed to by pbFont.
    ; $pdv - [in] Reserved. Must be 0.
    ; $pcFonts - [in] A pointer to a variable that specifies the number of fonts installed.
    ; Return values .: Success - the return value specifies the handle to the font added.
    ; Failure - 0
    ; Author ........: Eukalyptus
    ; Modified ......:
    ; Remarks .......:
    ; Related .......:
    ; Link ..........: @@MsdnLink@@ AddFontMemResourceEx
    ; Example .......:
    ; =================================================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _WinAPI_AddFontMemResourceEx($pbFont, $cbFont, $pdv=0, $pcFonts=0)
    Local $aResult = DllCall('gdi32.dll', 'handle', 'AddFontMemResourceEx', 'ptr', $pbFont, 'dword', $cbFont, 'ptr', $pdv, 'dword*', $pcFonts)
    If @error Then Return SetError(@error, 0, False)
    Return $aResult[0]
    EndFunc ;==>_WinAPI_AddFontMemResourceEx

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; #FUNCTION# ======================================================================================
    ; Name ..........: _GDIPlus_CreateFontFamilyFromName()
    ; Description ...: Creates a FontFamily object based on a specified font family.
    ; Syntax ........: _GDIPlus_CreateFontFamilyFromName($sFontname[, $hCollection = 0])
    ; Parameters ....: $sFontname - [in] Name of the font family. For example, Arial.ttf is the name of the Arial font family.
    ; $hCollection - [optional] [in] Pointer to the PrivateFontCollection object to delete. (default:0)
    ; Return values .: Success - a pointer to the new FontFamily object.
    ; Failure - 0
    ; Author ........: Prog@ndy, Yashied
    ; Modified ......:
    ; Remarks .......:
    ; Related .......:
    ; Link ..........: @@MsdnLink@@ GdipCreateFontFamilyFromName
    ; Example .......:
    ; =================================================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _GDIPlus_CreateFontFamilyFromName($sFontname, $hCollection = 0)
    Local $aResult = DllCall($ghGDIPDll, 'int', 'GdipCreateFontFamilyFromName', 'wstr', $sFontname, 'ptr', $hCollection, 'ptr*', 0)
    If @error Then Return SetError(1, 0, 0)
    Return SetError($aResult[0], 0, $aResult[3])
    EndFunc ;==>_GDIPlus_CreateFontFamilyFromName

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; #FUNCTION# ======================================================================================
    ; Name ..........: _GDIPlus_DeletePrivateFontCollection()
    ; Description ...: Deletes the specified PrivateFontCollection object.
    ; Syntax ........: _GDIPlus_DeletePrivateFontCollection($hCollection)
    ; Parameters ....: $hCollection - [in] Pointer to the PrivateFontCollection object to delete.
    ; Return values .: Success - True
    ; Failure - False
    ; Author ........: Prog@ndy, Yashied
    ; Modified ......:
    ; Remarks .......:
    ; Related .......:
    ; Link ..........: @@MsdnLink@@ GdipDeletePrivateFontCollection
    ; Example .......:
    ; =================================================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _GDIPlus_DeletePrivateFontCollection($hCollection)
    Local $aResult = DllCall($ghGDIPDll, 'int', 'GdipDeletePrivateFontCollection', 'ptr*', $hCollection)
    If @error Then Return SetError(1, 0, False)
    Return SetError($aResult[0], 0, $aResult[0] = 0)
    EndFunc ;==>_GDIPlus_DeletePrivateFontCollection

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; #FUNCTION# ======================================================================================
    ; Name ..........: _GDIPlus_NewPrivateFontCollection()
    ; Description ...: Creates an PrivateFontCollection object.
    ; Syntax ........: _GDIPlus_NewPrivateFontCollection()
    ; Parameters ....:
    ; Return values .: Success - a pointer to the PrivateFontCollection object.
    ; Failure - 0
    ; Author ........: Prog@ndy, Yashied
    ; Modified ......:
    ; Remarks .......:
    ; Related .......:
    ; Link ..........: @@MsdnLink@@ GdipNewPrivateFontCollection
    ; Example .......:
    ; =================================================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _GDIPlus_NewPrivateFontCollection()
    Local $aResult = DllCall($ghGDIPDll, 'int', 'GdipNewPrivateFontCollection', 'ptr*', 0)
    If @error Then Return SetError(1, 0, 0)
    Return SetError($aResult[0], 0, $aResult[1])
    EndFunc ;==>_GDIPlus_NewPrivateFontCollection

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; #FUNCTION# ======================================================================================
    ; Name ..........: _GDIPlus_PrivateAddMemoryFont()
    ; Description ...: Adds a font file from memory to the private font collection.
    ; Syntax ........: _GDIPlus_PrivateAddMemoryFont($hCollection, $pMemory, $iLength)
    ; Parameters ....: $hCollection - [in] Pointer to the font collection object.
    ; $pMemory - [in] A pointer to a font resource.
    ; $iLength - [in] The number of bytes in the font resource that is pointed to by $pMemory.
    ; Return values .: Success - True
    ; Failure - False
    ; Author ........: Eukalyptus
    ; Modified ......:
    ; Remarks .......:
    ; Related .......:
    ; Link ..........: @@MsdnLink@@ GdipPrivateAddMemoryFont
    ; Example .......:
    ; =================================================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _GDIPlus_PrivateAddMemoryFont($hCollection, $pMemory, $iLength)
    Local $aResult = DllCall($ghGDIPDll, 'int', 'GdipPrivateAddMemoryFont', 'ptr', $hCollection, 'ptr', $pMemory, 'int', $iLength)
    If @error Then Return SetError(1, 0, False)
    Return SetError($aResult[0], 0, $aResult[0] = 0)[autoit]

    [/autoit]


    EndFunc ;==>_GDIPlus_PrivateAddMemoryFont
    #endregion
    [/autoit]

    Toolbar

    Spoiler anzeigen
    [autoit]


    #include <GuiReBar.au3>
    #include <Constants.au3>
    #include <GuiToolbar.au3>
    #include <GDIPlus.au3>

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_Startup()

    [/autoit] [autoit][/autoit] [autoit]

    Enum $idSave = 1500, $idCopy, $idSend, $idUndo, $idPen, $idHighlighter, $idRectangle, $idEllipse, $idArrow, $idColor, $idText, $idText_Conf, $idFX, $idPen_Size
    $TB_Style = BitOR($TBSTYLE_FLAT, $TBSTYLE_TRANSPARENT, $CCS_NORESIZE, $CCS_NOPARENTALIGN)

    [/autoit] [autoit][/autoit] [autoit]

    $hGUI = GUICreate("Toolbar with icons from memory", 740, 200)
    $hHBITMAP_Icons = Load_BMP_From_Mem(_ImageEditor_ToolbarIcons(), True)

    [/autoit] [autoit][/autoit] [autoit]

    $hToolbar = _GUICtrlToolbar_Create($hGUI, $TB_Style)
    _GUICtrlToolbar_SetBitmapSize($hToolbar, 24, 24)
    _GUICtrlToolbar_AddBitmap($hToolbar, 1, 0, $hHBITMAP_Icons)
    $hReBar = _GUICtrlRebar_Create($hGUI, BitOR($CCS_TOP, $RBS_VARHEIGHT, $RBS_AUTOSIZE, $RBS_BANDBORDERS))

    [/autoit] [autoit][/autoit] [autoit]

    Global $aStrings[14]
    $aStrings[0] = _GUICtrlToolbar_AddString($hToolbar, " &Save ")
    $aStrings[1] = _GUICtrlToolbar_AddString($hToolbar, " &Copy ")
    $aStrings[2] = _GUICtrlToolbar_AddString($hToolbar, " S&end ")
    $aStrings[3] = _GUICtrlToolbar_AddString($hToolbar, "&Undo")
    $aStrings[4] = _GUICtrlToolbar_AddString($hToolbar, " &Pen ")
    $aStrings[5] = _GUICtrlToolbar_AddString($hToolbar, "Pen S&ize")
    $aStrings[6] = _GUICtrlToolbar_AddString($hToolbar, "&Highlighter")
    $aStrings[7] = _GUICtrlToolbar_AddString($hToolbar, "&Rectangle")
    $aStrings[8] = _GUICtrlToolbar_AddString($hToolbar, "&Ellipse")
    $aStrings[9] = _GUICtrlToolbar_AddString($hToolbar, "&Arrow")
    $aStrings[10] = _GUICtrlToolbar_AddString($hToolbar, "C&olor")
    $aStrings[11] = _GUICtrlToolbar_AddString($hToolbar, " &Text ")
    $aStrings[12] = _GUICtrlToolbar_AddString($hToolbar, "Confi&g")
    $aStrings[13] = _GUICtrlToolbar_AddString($hToolbar, "F&X")

    [/autoit] [autoit][/autoit] [autoit]

    _GUICtrlToolbar_AddButton($hToolbar, $idSave, 2, $aStrings[0], $BTNS_AUTOSIZE)
    _GUICtrlToolbar_AddButtonSep($hToolbar)

    [/autoit] [autoit][/autoit] [autoit]

    _GUICtrlToolbar_AddButton($hToolbar, $idCopy, 3, $aStrings[1], $BTNS_AUTOSIZE)

    [/autoit] [autoit][/autoit] [autoit]

    _GUICtrlToolbar_AddButton($hToolbar, $idSend, 4, $aStrings[2], $BTNS_AUTOSIZE)
    _GUICtrlToolbar_AddButtonSep($hToolbar)

    [/autoit] [autoit][/autoit] [autoit]

    _GUICtrlToolbar_AddButton($hToolbar, $idUndo, 0, $aStrings[3], $BTNS_AUTOSIZE)
    _GUICtrlToolbar_AddButtonSep($hToolbar)

    [/autoit] [autoit][/autoit] [autoit]

    _GUICtrlToolbar_AddButton($hToolbar, $idHighlighter, 6, $aStrings[6], $BTNS_AUTOSIZE)
    _GUICtrlToolbar_AddButtonSep($hToolbar)

    [/autoit] [autoit][/autoit] [autoit]

    _GUICtrlToolbar_AddButton($hToolbar, $idPen, 5, $aStrings[4], $BTNS_AUTOSIZE)
    _GUICtrlToolbar_AddButton($hToolbar, $idPen_Size, 8, $aStrings[5], $BTNS_DROPDOWN + $BTNS_WHOLEDROPDOWN + $BTNS_AUTOSIZE)
    _GUICtrlToolbar_AddButton($hToolbar, $idRectangle, 9, $aStrings[7], $BTNS_AUTOSIZE)
    _GUICtrlToolbar_AddButton($hToolbar, $idEllipse, 10, $aStrings[8], $BTNS_AUTOSIZE)
    _GUICtrlToolbar_AddButton($hToolbar, $idArrow, 11, $aStrings[9], $BTNS_AUTOSIZE)
    _GUICtrlToolbar_AddButton($hToolbar, $idColor, 12, $aStrings[10], $BTNS_AUTOSIZE)
    _GUICtrlToolbar_AddButtonSep($hToolbar)

    [/autoit] [autoit][/autoit] [autoit]

    _GUICtrlToolbar_AddButton($hToolbar, $idText, 13, $aStrings[11], $BTNS_AUTOSIZE)
    _GUICtrlToolbar_AddButton($hToolbar, $idText_Conf, 14, $aStrings[12], $BTNS_AUTOSIZE)
    _GUICtrlToolbar_AddButtonSep($hToolbar)

    [/autoit] [autoit][/autoit] [autoit]

    _GUICtrlToolbar_AddButton($hToolbar, $idFX, 15, $aStrings[13], $BTNS_DROPDOWN + $BTNS_WHOLEDROPDOWN + $BTNS_AUTOSIZE)
    _GUICtrlToolbar_AddButtonSep($hToolbar)
    GUISetState()
    _GUICtrlRebar_AddToolBarBand($hReBar, $hToolbar, "", 0)

    [/autoit] [autoit][/autoit] [autoit]

    Do
    Until GUIGetMsg() = -3

    [/autoit] [autoit][/autoit] [autoit]

    _WinAPI_DeleteObject($hHBITMAP_Icons)
    _GDIPlus_Shutdown()
    GUIDelete()
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    Func Load_BMP_From_Mem($bImage, $hHBITMAP = False)
    If Not IsBinary($bImage) Then Return SetError(1, 0, 0)
    Local $aResult
    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
    $aResult = DllCall("ole32.dll", "int", "CreateStreamOnHGlobal", "handle", $pData, "int", True, "ptr*", 0) ;Creates a stream object that uses an HGLOBAL memory handle to store the stream contents
    If @error Then Return SetError(2, 0, 0)
    Local Const $hStream = $aResult[3]
    $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromStream", "ptr", $hStream, "int*", 0) ;Creates a Bitmap object based on an IStream COM interface
    If @error Then Return SetError(3, 0, 0)
    Local Const $hBitmap = $aResult[2]
    Local $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
    $tVARIANT = 0
    If $hHBITMAP Then
    Local Const $hHBmp = _GDIPlus_BitmapCreateDIBFromBitmap($hBitmap)
    _GDIPlus_BitmapDispose($hBitmap)
    Return $hHBmp
    EndIf
    Return $hBitmap
    EndFunc ;==>Load_BMP_From_Mem

    [/autoit] [autoit][/autoit] [autoit]

    Func _GDIPlus_BitmapCreateDIBFromBitmap($hBitmap)
    Local $tBIHDR, $ret, $tData, $pBits, $hResult = 0
    $ret = DllCall($ghGDIPDll, 'uint', 'GdipGetImageDimension', 'ptr', $hBitmap, 'float*', 0, 'float*', 0)
    If (@error) Or ($ret[0]) Then Return 0
    $tData = _GDIPlus_BitmapLockBits($hBitmap, 0, 0, $ret[2], $ret[3], $GDIP_ILMREAD, $GDIP_PXF32ARGB)
    $pBits = DllStructGetData($tData, 'Scan0')
    If Not $pBits Then Return 0
    $tBIHDR = DllStructCreate('dword;long;long;ushort;ushort;dword;dword;long;long;dword;dword')
    DllStructSetData($tBIHDR, 1, DllStructGetSize($tBIHDR))
    DllStructSetData($tBIHDR, 2, $ret[2])
    DllStructSetData($tBIHDR, 3, $ret[3])
    DllStructSetData($tBIHDR, 4, 1)
    DllStructSetData($tBIHDR, 5, 32)
    DllStructSetData($tBIHDR, 6, 0)
    $hResult = DllCall('gdi32.dll', 'ptr', 'CreateDIBSection', 'hwnd', 0, 'ptr', DllStructGetPtr($tBIHDR), 'uint', 0, 'ptr*', 0, 'ptr', 0, 'dword', 0)
    If (Not @error) And ($hResult[0]) Then
    DllCall('gdi32.dll', 'dword', 'SetBitmapBits', 'ptr', $hResult[0], 'dword', $ret[2] * $ret[3] * 4, 'ptr', DllStructGetData($tData, 'Scan0'))
    $hResult = $hResult[0]
    Else
    $hResult = 0
    EndIf
    _GDIPlus_BitmapUnlockBits($hBitmap, $tData)
    Return $hResult
    EndFunc ;==>_GDIPlus_BitmapCreateDIBFromBitmap

    [/autoit] [autoit][/autoit] [autoit]

    Func _ImageEditor_ToolbarIcons()
    Local $ImageEditor_Icons
    $ImageEditor_Icons &= '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'
    $ImageEditor_Icons &= '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'
    $ImageEditor_Icons &= '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'
    $ImageEditor_Icons &= '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'
    $ImageEditor_Icons &= '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'
    $ImageEditor_Icons &= 'JLcinjLBFU+C3+uBz+PJHTrI9WlTzS7Ltkz3wMIs/ZzTp8xbsGjpHZ2KAaKxaGTC+HEtxUVFIbfHA2pT+Fw8Mr0MSZVDU1RCPJ6Ax+sBGBAKcXC7CQoK8jFmZBEaGxvww5ZmCIK4Q07FX+0Z/bv8mRnU6R/gVMJc7Ls3XiuxW6KiqtzLnfMQWm0X6Jp3Ma08gP4Dx+HzFhe2qV7YnhB21jRA0zRIktQ9t6e1tRW1tbUHSEA9J3JxPVxPhmFAluVuQM/IyMAjjzyCcDiMBx54AKeffjpuuukmPPzww2hubj4gIwAAQZbtnfW2uLMubAwwrUZGWQM4nqeixDGHg1GXi4luByEl/UouX/Bm8LGzr1hp9TYesHUpmy93agmvraY8IPAA8LoE6jRM5iOEDND/ePvn9Pnnrgokkpns0kvgGHsSOKcPJoCTpk7E8q+XYPjQgSC8gH2bdmD35x9jUDgs/2fwsI1xNVnLQOoAtHZd0F73vc3SG2VobQ53ulZ/jOTBftQacZAJYL3edLleKcX+rs+uAaOU4tuNDb0ygH49LtaMV75E1OCQNHgYFHjttslgjOKUKZMRbu84pEPIttN92Nu3Q1+xAsbSpcjXNPChEOB0wiOJYA0NsNvCSFkmmk84AftKSzFm/Hjk5+cf1i52NK14/KmZl1157fSky4dNmzaS6oWfyLmhzGVvzZ+/7JixaCPuIKGRzyBwOSN6E5BaS6DIgBxlRE4wPQ6uvi3vpH/Gz21TUx345KVXDm184cXfu11uUrNpF4J5mfAGggBHwAtcmgQYQEDACAfCUXCEwAKDbuhoaWnB92tWoKmluTtzsmwbqi6jtKTyQQAYJfhhIL0ciMgRuGQFSClx/tuGx7AtNSY7RodHUiqSqtoD/C00agpaYaA+2wNjTJ/S/pUFjw4ule5ySO6IKHBgDBAE7ucjgEgkEyeeuBY+n3zcfUiSCZ8viV27Bh1uNyKKVtlNt6dJ4Jk/z7RMw8V1OjR4AhDTcFbPTpPA0E4S0CIdWaaccvmK++zr7eFgUDXt/DaVZj2LYqw2HPCYPAoamnFlIAmJiNCUtAMAaAAAIABJREFUFDpqNsDRvgZatAYRqS+CGcMQyCsFzwuwbNtlmoDolCAJvPv0SWN+s3PXntcsy14DbISqalp7e0ftsPLy8nRZiMHlElAQAurCQGvCjXB7O7JzcmFbFrweHowJcLk9+GF7GHZTFe6dPtx+eu7mZ5K23avA4M0p6ufh7azU6g+/jaz59O6yUSMvd/ndcHh5tLQkwFsaMv1FKAs5cY1bx7xqDetdPuys34BIJAKv19s9FyA3Nxetra2wLIvsLwF1ZQA9M4QpU6agpKQEALBo0SKsWrUKc+fOxUMPPYQrrrgCv/jFL7Bw4UJ8//33B5WGAEC49d6aOIDBR747vjw4g1OmEsK1AixpRus8AHMzarst2XBTChN+f9+sU09NbnC633G+8PzJfR75U39H2QAJgQCYTRECcHIqha+y8jH1ut/Ce/10zHvxJaONCjumVlTUWp/8Z2fYsnZ0yj/0IOcHYQQ8GHLzs7uj+/2j/f0dQYdyCIFtBeEAm5kHLwIziskVeWmZqXNbuXpv92d56NrTezmEGPtRu8vMDAKMHdQhxKUSUF55BdaGDZCGDYP72mshDhsG+P2wbQoqOMAIwEWiCK5dDffHHyEjHIZz4kRYltUd/XcVlA41EeVgLSOjyF0+rHLO4LJ8vrZ+O9m7frVN21vqswYNfPBYMYTtxNUIjHiG+a9gxGwjSKxKu33kGCNyEmaSkoaOnN/M5e9ebRrVaK2rP2x/hCFHURTEIhFEGsPwBL0IFuQimJUBTuRASJoAuiQgxgBN1VBfW4cVa1ahvSPc7dRijEI1DcRk/f775818CgCGcb70HGAALp5DRtICl0pl5DilR3Mj9tAOWYWsaeDF9LjqhoVGQ0ErMVCX6wM5qR9GDckWcjOdv1E1yyGJ/B2dVuWft23bVgmXy4Rp'
    $ImageEditor_Icons &= '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'
    $ImageEditor_Icons &= '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'
    $ImageEditor_Icons &= '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'
    $ImageEditor_Icons &= 'IAgIBo9o4kBGRobXtunFRUW5gdranXYymewYPnz4m/PmzWs6jmc/hxe9z61bt4YpisK5XK51mZmZjzU3t2wnWlvz6VMWkfsem8GkzFvRurcWjXtqj6nz0+67/FsAI1/9w6wzm9paXszKyOzrd3vhcjjR6QPtug6cbdnMMC2kdEWLJPVrPt/y9TuHvXaEA2PM4/G4f1VeOZJkZeXClhNIrVyBPT+shCqSNsPmbqeg74mCw3bzEhpaUu+88eku/fKzBzxXmO3OT0uCIgSepH9gCEgs+r7+oV218Zcu/DkLwZdf/h44juI3v3kLq1dPwJw5N2DUqA2HuXE5bN8+ALNn34rNm0fg+utfwOmnf3u8p9ciHaGqu3//slhTPZTbD/wFAnByKmDIsscZ6EkwjImC8KLf67kwnkz1V3UNHWo7YkYrEjEbSpxHjjcTUbsRATMDts1gmzbCOyNIqHFklnvh7+eHLTG8t+Drls+Xrt5KGfN34ovdQ0ax1q5bvyHc3n7q9u07SF19PeLxJGTFhtORjgN4joc/Kwfbvl8OfyCIAf37ASCIRGOIxeIoLS0d4vV6ArFYPHLIMdA03WdTS4INpqd6LJYJ+P3+bt9+zzk7HR0dCIVC3VhiGIZoWdYgAPVdAWPPdYd6Frf3J4GeNs+emv+hTCHHWjWkL78bIYZp487fhgCBJ4RSGzzlIXL83g6RTybj8T9/qKlH0ZfVs7bQHlca1VQiwTHbat26+vnMePNNGSede5lct20+gETdu3+5p3jqpUv0IePutTctW16/cN5MACajDNRi4ADYoADHOpdxYFCSChgTYVnp6QNySkYqoUBWNMgpBXJKhqaaSMkyLMrAqA1CeNjMPj4CoBTPvLPykC6g7/44EAxAPP7j72/Ikeg2aenSKdJ554EXRdTU1MLj8aB82BBkBIIgnATdoNBsgHMQOHgbjudnY/fK5aiaPBnl/fqhuLgYLpcLoVAI7e3t3bP+jhD9V4wbN65IlhW2YcMWvby8vMrv9//9mG2f33oc6F9Z/ejsPahaSwiAE2fP1qry8hpw++19BYXLpcuWfcmIZmPLtzOweunxT4667pl7vgTQ75U/zJoSS8bfz/QHs7weL5wcATFMWAYP3TBIUpFT0ZR+1YLNCz86ImjpFmxqDx99wsgTMrNzkYyEYQwbiESGV051tG4NBTxPhLfvXuB2ZdFQXhmKXS5s1lppVUfDR/M+2aFecc6gl4tzPUXpiI6DadixRasa7t5bn3id7V87s20OsuyEaQrHNQCGIcC2ucNkMwznnvsFpk//J+bOvQE33vgCLr30HYwbtxIVFdvg9SqwLAGaJiESycCsWXfh7bevQCjUirlzr8QFF3x23A4iAKaqOENTTv1MHzB4g9bSVKiHWwvsjnAOiccyeSXl1yyb05MJH1DYvF+YuTcrI3itYZpzYsnEAIuZJJGIw5EaAifPQ/DHkEooUHkdjAKSKCDzxCAyVD84ENgOxt76elHD3I++WKgZxnoAWwHsBRDp6aef98abf+5fWprJ8+QqxphICIdgwAGn0wmnw4FAwIspY/sj1rIH8aSFZDLZWbMmjOO5xL6Ghn2SJLkONwa6rmuWbRmmzQDegZ6LBLhcLgiCAKtzscmuLEBVVcRiMYRCoa5o3WkYxoUAlnXVALoIYP+lYQ621MPB7J6HdP4ex3Vm8z6K0xOGujB1tMsAx9m8w83FEiYnx+L6na/Jx3UDLXn+4dToWSduN/tUDCeApG75dp7rhPMfFHyZk61k5CsA+r7Fb3+OxW9/3vM4HiIYU2AxBh4cOMbB0nXEzTakEipEBGCY6ecwnkghFpWhaCqUlJrOBnQTuqGDMQqLpWeZUuv4fsSJMorbLxrTyyEE9qM81eVkSSZ/LE6tD0ceHfXiP9/McLkKxUmTMG7SGNhceplp2wAsA2DEgmjKEPbuAnlzLlZuWIe3s7KAnTuxta0Nn3zyyQGLPPE8X3Woz5mdnc1Fo9ErgsFg'
    $ImageEditor_Icons &= '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'
    $ImageEditor_Icons &= 'PCKxXEUzXIpjXx+XAAACIklEQVSq56iutKrl6JaAkTRZJskyZiLDrIiRVq4MDSQvDgZM4QS97FwUeI5HLBtNpNB9vhWmoSMUjaGt6zgC/QIWoyCQqCLLnjy3+wWXpnklSdImDCNjMBYaHYuOBKOx9IRuiHhqAtF4EvFUCha3H8iQZ45PhJSUFL9W5ivbYZrmP8lU8qxLMeOBoejVDLOMuXJp3ZORU0XTqjfskArL1sgFvhpBJFUYCdjxIOOjnXGz79pBwc0fnOokQrKnF4kDKZtD2jEhRGjS/hsaGop27tz5EQD3w5iBF2JjhJDxpqamxmcuAKzc/Km/lxf9WOR/pZRfavm17+SRXZxbw5iBBsJBqXMtecyvEkSWfqL7KXVdApAPwAvAjf+YPCXHGJjjPGOOAS1Y97eiomJNaWnpIb/fv7a5uXnsf77z5EWdlmzbRvcLQTuOHWOHQ6EpcQ4xQ7YvHuLwn5rX3HPoQE4mmfAKm7slShUhiJYZTypWT49EAgHI6TRXBbgmUdOtuUxPbj7z5HmYrCjMtIXFLG5luGWnGeMDsbD93fV2Hjb0qT49DwCzbGtMpNB19jdwMyt52tMXwJ/XbiB/kRe+4sVksbdAohKRAAlC2ETTNFAqwTK5CIYjfDgUFrFYVCSTKYzFxtHZN4j+keBUIchs31+mlHLb5gsdp3ucMpGoXFpZA6q+BJsXTpsTEOmIwROhUxCiez72PT4+jlgsRp/Ety8uLub/AhIKBb23x+IGAAAAAElFTkSuQmCC'
    Return Binary(_Base64Decode($ImageEditor_Icons))
    EndFunc ;==>_ImageEditor_ToolbarIcons

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit][/autoit]

    Play GIF Anim from memory: -> hier

    Play Chip Sound from memory -> hier

    Gruß,
    UEZ

  • File to Base64 String Code Generator v1.20 Build 2020-06-05

    • UEZ
    • 27. Oktober 2011 um 17:00

    Sorry, sollte auch ohne die APIConstants.au3 laufen, die in der WinAPIEX UDF sein sollte.

    Gruß,
    UEZ

  • File to Base64 String Code Generator v1.20 Build 2020-06-05

    • UEZ
    • 27. Oktober 2011 um 10:50

    Da ich relativ oft Binär Strings verwende, um Bilder, Sounds, etc. direkt vom Speicher zu lesen, habe ich kleines Tool dazu geschrieben, das eine Datei in einen Base64 String umwandelt und gleich als Funktion bereit stellt.

    Optional kann man den Base64 String vorher mit der Build-In Funktion (ntdll.dll) oder mit LZMAT komprimieren, um Platz zu sparen!

    Danke an
    trancexx für die LZNTCompress / LZNTDecompress und _Base64Decode() Funktionen
    Ward für die _Base64Encode() / LZMAT und MsgBoxEx() Funktionen
    wraithdu für die Beseitung und Erweiterung des Codes

    Tipp: für größere Dateien würde ich die Kompression auf Standard setzen, damit die Kompression schneller geht -> rechte Maustaste auf das Label Compression -> Compression Strength -> Standard

    Die Bedienung sollte selbsterklärend sein.

    Download: File to Base64 String Code Generator v1.20 Build 2020-06-05 (AutoIt Version 3.3.13.19 oder höher benötigt!)

    Source Code auf Pastebin.com

    Für Anwendungsbeispiele siehe Post#6.

    Über Kritik würde ich mich wie immer freuen. :D

    Gruß,
    UEZ


    Historie:

    Spoiler anzeigen



    2011-10-29: kleine Änderungen an der GUI + schnelleres Erstellen des Binär Strings
    2011-10-30: Code auf Base64 umgestellt + DEP Check + Bugs gefixt
    2011-10-31: noch ein Bug gefixt (Absturz bei 0 Kb Dateien) + Modifikationen an dem GUI Code
    2011-11-01: und wieder ein Bug gefunden (leere Inhalt konnte gespeichert werden)
    2011-11-11: Multi File Auswahl hinzugefügt
    2011-11-12: Funktionsnamen Bug beseitigt (danke Oscar!)
    2011-11-14: kleine Modifikationen am Code
    2011-11-15: Version 1.0 veröffentlicht und Name geändert
    2011-11-16: Komprimierung wird nun automatisch abgeschaltet, wenn die komprimierte Größe größer als die Original Größe ist. Farben können nun über die Ini Datei gesteuert werden
    2011-11-17: Credits Funktion hinzugefügt
    2011-11-21: ein Sleep(50) in eine Schleife hinzugefügt, da ansonsten die CPU unnötig schwitzt
    2012-01-14: Funktion Load_BMP_From_Mem() aktualisiert
    2012-04-11: kleinere Bugs in Funktion Load_BMP_From_Mem() Funktion gefixed und Funktion hinzugefügt den generierten Code direkt in SciTE einzufügen
    2012-04-17: Popup Menu hinzugefügt, damit man u.a. den selektierten Bereich in die Zwischenablage kopieren kann
    2012-04-24: Kompressionseinstellung wird jetzt auch in der Ini Datei gespeichert
    2012-05-02: Drag'n'Drop von Files auf die GUI hinzugefügt + Kompressionseinstellung wird auch in der Ini Datei gespeichert
    2012-05-03: Ordner konnten auch per Drag'n'Drop auf die GUI hinzugefügt -> fixed
    2012-05-18: Kopieren des generierten Codes in das Clipboard mit RMB im Editfeld + Kompressionsstatistik kann jetzt wieder angezeigt werden, wenn Label Multiselect mit der LMT gedrückt wird + Code zum Speichern des Binärstrings hinzugefügt
    2012-05-31: Fehler in der Drag'n'Drop Funktion behoben
    2012-07-23: einige interne Modifikationen
    2012-08-29: Bug gefixt in der Multi Selektion Kompression. Binär String wurde nicht komprimiert übergeben, somit war der Binärstring unbrauchbar!
    2012-10-12: Drag'n'Drap von einem Ordner war möglich -> ist jetzt gefixt
    2012-10-13: "New Length" Wert wurde nicht gelöscht, wenn die Kompression nicht aktiviert wurde
    2013-02-19: Buffersize als Aufrufparameter für die Funktion _WinAPI_LZNTDecompress() hinzugefügt.
    2013-03-25: Option für die Pfadangabe in generierter Code Funktion hinzugefügt und @LF durch @CRLF ersetzt, kritischen Fehler behoben
    2014-05-01: LZMAT Kompression hinzugefügt + einige interne Modifikationen
    2014-05-30: Statistik Werte wurden den Umständen falsch angezeigt
    2014-06-01: einige Fehler in der Checkbox Logik behoben, was dazu führen konnte, dass der Base64 String nicht zur Entpackfunktion passt
    2014-06-05: kleine optische Änderungen
    2014-08-01: einige Bugs wurden von wraithdu bezüglich LZMT Dekompression in x64 Modus und noch andere Code Segmente gefixt.
    2014-08-02: Option hinzugefügt, um kontinuierliche Funktion Namen zu erzeugen, wenn Multi-Dateien ausgewählt werden, um Funktionen einfach innerhalb Skript behandeln - danke an Oscar für die Idee!
    2014-11-05: Bug gefixt, wenn LZMAT selektiert wurde, war LZNT immer noch selektiert.
    2014-11-11: hatte vergessen in der ASM_DecompressLZMAT Funktion einige Variable zu deklarieren, was bei Benutzung von AutoItSetOption("MustDeclareVars", 1) zu Fehlern führt
    2015-01-20: Output Source Code ein wenig modifiziert

    2020-06-05: Code aktualisiert, damit der Code mit der neusten AutoIt Version sauber läuft. Keine neuen Features hinzugefügt!

  • AutoIt Windows Screenshooter v1.84 Build 2019-08-18

    • UEZ
    • 25. Oktober 2011 um 10:49

    "This is not a bug - this is a feature".

    Ne, mal im Ernst. Folgende Werte werden für _GDIPlus_GraphicsSetInterpolationMode() gesetzt:
    Low = 5
    Medium = 0
    Hight = 7

    Code
    ;                  |0 - Default interpolation mode
    ;                  |1 - Low-quality mode
    ;                  |2 - High-quality mode
    ;                  |3 - Bilinear interpolation. No prefiltering is done
    ;                  |4 - Bicubic interpolation. No prefiltering is done
    ;                  |5 - Nearest-neighbor interpolation
    ;                  |6 - High-quality, bilinear interpolation. Prefiltering is performed to ensure high-quality shrinking
    ;                  |7 - High-quality, bicubic interpolation. Prefiltering is performed to ensure high-quality shrinking

    Beim Zoomen wird das Bild entsprechend interpoliert, so dass der Eindruck entsteht, dass die Pixels verschwommen sind. Bei der normalen Ansicht sieht das Bild besser aus, wenn die Interpolation eingeschaltet ist.


    Btw, hat jemand eine Idee, wie ich herausfinden kann, ob ein Control ein Scrollbalken hat? Z.B. die AutoIt Hilfe -> das rechte Fenster!

    Gruß,
    UEZ

  • Rekursion - Sierpinski-Dreieck - GDI+

    • UEZ
    • 21. Oktober 2011 um 20:40

    Ich habe auch vor langer Zeit einige L-Systeme implementiert: GDI+ Beispiele (#05 - L-System Fraktale)

    Da der Code relativ alt ist, kann es sein, dass man ihn anpassen muss, damit er sauber läuft. Hier die Version, das mit der aktuellen Version läuft:

    Spoiler anzeigen
    [autoit]


    ;coded by UEZ 2009-01-17
    #AutoIt3Wrapper_Run_Obfuscator=y
    #Obfuscator_Parameters=/sf /sv /om /cs=0 /cn=0
    #AutoIt3Wrapper_UseUpx=n
    ;~ #AutoIt3Wrapper_Run_After=upx.exe --best "%out%"
    #AutoIt3Wrapper_Run_After=upx.exe --ultra-brute "%out%"
    #AutoIt3Wrapper_Run_After=del "%scriptdir%\%scriptfile%_Obfuscated.au3"

    [/autoit] [autoit][/autoit] [autoit]

    #include <Array.au3>
    #include <GDIPlus.au3>
    #Include <Misc.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt('MustDeclareVars', 1)
    Opt("GUIOnEventMode", 1)

    [/autoit] [autoit][/autoit] [autoit]

    Global $dll = DllOpen("user32.dll")
    Global Const $Pi = 4 * ATan(1)
    Global Const $Pi_Div_180 = $Pi / 180
    Global Const $width = 800
    Global Const $height = 600
    Global $hGUI, $hWnd, $hGraphic, $Bitmap, $Pen
    Global $angle = 0, $x1, $y1, $x2, $y2, $random
    Global $length, $depth, $dir, $degree, $dist_rel
    Global $font_size, $String_Format, $Font_Family, $Font, $Text_Layout, $Brush, $text

    [/autoit] [autoit][/autoit] [autoit]

    $hGUI = GUICreate("GDI+: L-System Fractals by UEZ 2009 (press F9 to save current image)", $width, $height)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetOnEvent(-3, "_Exit")

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_Startup ()
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND ($hGUI)
    $Pen = _GDIPlus_PenCreate(0, 1)
    _GDIPlus_GraphicsSetSmoothingMode($hGraphic, 2) ; AntiAlias

    [/autoit] [autoit][/autoit] [autoit]

    $font_size = 7
    $String_Format = _GDIPlus_StringFormatCreate ()
    $Font_Family = _GDIPlus_FontFamilyCreate ("Arial")
    $Font = _GDIPlus_FontCreate ($Font_Family, $font_size, 2)
    $Brush = _GDIPlus_BrushCreateSolid (0xDF000000) ;text color

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_GraphicsClear($hGraphic, 0xFFFFFFFF)

    [/autoit] [autoit][/autoit] [autoit]

    $random = Random(1, 11, 1)

    [/autoit] [autoit][/autoit] [autoit]

    AdlibRegister("Save_PIC", 50)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Switch $random
    Case 1 ;Dragon Curve
    $x1 = $width / 4.2
    $y1 = $height / 2.8
    $length = 500
    $depth = Random(6, 18, 1)
    $dir = 1
    $angle = 0
    $text = "Dragon Curve, Recursion Depth = " & $depth
    Draw_Text()
    Dragon($length, $depth, $dir)
    Case 2 ;Levy-C Curve
    $x1 = $width / 3.65
    $y1 = $height / 2.875
    $length = 475
    $depth = Random(6, 18, 1)
    $dir = 1
    $angle = 0
    $text = "Levy-C Curve, Recursion Depth = " & $depth
    Draw_Text()
    Levy_C($length, $depth, $dir)
    Case 3 ;Koch Curve
    $x1 = $width / 5.3
    $y1 = $height / 1.35
    $x2 = ""
    $y2 = ""
    $length = 500
    $depth = Random(2, 8, 1)
    $dir = 1
    $angle = 0
    $text = "Koch Curve, Recursion Depth = " & $depth
    Draw_Text()
    Koch($length, $depth, $dir) ;F
    Turn(-$dir * 2 * $degree) ;--
    Koch($length, $depth, $dir) ;F
    Turn(-$dir * 2 * $degree) ;--
    Koch($length, $depth, $dir) ;F
    Case 4 ;Peano Curve
    $x1 = $width / 8
    $y1 = $height / 2
    $length = 600
    $depth = Random(2, 5, 1)
    $dir = 1
    $angle = 0
    $text = "Peano Curve, Recursion Depth = " & $depth
    Draw_Text()
    Peano($length, $depth, $dir)
    Case 5 ;Triangle
    $x1 = $width / 10.8
    $y1 = $height / 1.03
    $length = 1300
    $depth = Random(2, 10, 1)
    $dir = 1
    $angle = 0
    $text = "Triangle, Recursion Depth = " & $depth
    Draw_Text()
    Triangle($length, $depth, $dir)
    Case 6 ;Arrowhead Curve
    $x1 = $width / 10.80
    $y1 = $height / 1.05
    $length = 650
    $depth = Random(3, 9, 1)
    $dir = 1
    $angle = 0
    $text = "Arrowhead Curve, Recursion Depth = " & $depth
    Draw_Text()
    Arrowhead_R($length, $depth, $dir) ;R
    Case 7 ;Penta Plexity
    $x1 = $width / 3.55
    $y1 = $height / 15
    $length = 350
    $depth = Random(1, 6, 1)
    $dir = 1
    $angle = 0
    $text = "Penta Plexity, Recursion Depth = " & $depth
    Draw_Text()
    ;F++F++F++F++F
    Penta_Plexity($length, $depth, $dir) ;F
    Turn($dir * 2 * $degree) ;++
    Penta_Plexity($length, $depth, $dir) ;F
    Turn($dir * 2 * $degree) ;++
    Penta_Plexity($length, $depth, $dir) ;F
    Turn($dir * 2 * $degree) ;++
    Penta_Plexity($length, $depth, $dir) ;F
    Turn($dir * 2 * $degree) ;++
    Penta_Plexity($length, $depth, $dir) ;F
    Case 8 ;Sierpinski Carpet
    $x1 = $width / 8
    $y1 = $height / 2
    $length = 600
    $depth = Random(2, 6, 1)
    $dir = 1
    $angle = 0
    $text = "Sierpinski Carpet, Recursion Depth = " & $depth
    Draw_Text()
    Sierpinski_Carpet($length, $depth, $dir) ;F
    Case 9 ;Gosper Curve
    $depth = Random(4, 6, 1)
    $x1 = $width / 1.45
    $y1 = $height / 7 - $depth
    $length = 480
    $dir = 1
    $angle = 0
    $text = "Gosper Curve, Recursion Depth = " & $depth
    Draw_Text()
    Gosper_R($length, $depth, $dir) ;R
    Case 10 ;Sierpinski Triangle
    $x1 = $width / 10.666
    $y1 = $height / 1.05
    $length = 325
    $depth = Random(2, 9, 1)
    $dir = 1
    $angle = 0
    $text = "Sierpinski Triangle, Recursion Depth = " & $depth
    Draw_Text()
    ;FXF--FF--FF
    Sierpinski_F($length, $depth, $dir) ;F
    Sierpinski_X($length, $depth, $dir) ;X
    Sierpinski_F($length, $depth, $dir) ;F
    Turn(-$dir * 2 * $degree) ;--
    Sierpinski_F($length, $depth, $dir) ;F
    Sierpinski_F($length, $depth, $dir) ;F
    Turn(-$dir * 2 * $degree) ;--
    Sierpinski_F($length, $depth, $dir) ;F
    Sierpinski_F($length, $depth, $dir) ;F
    Case 11 ;Pythagoras Tree
    $x1 = $width / 2
    $y1 = $height / 1.1
    $length = 110
    $depth = Random(5, 15, 1)
    $dir = 1
    $angle = 5
    $text = "Pythagoras Tree, Recursion Depth = " & $depth
    Draw_Text()
    Pythagoras($length, $depth, $dir)
    EndSwitch
    $random += 1
    If $random = 12 Then $random = 1
    Sleep(4000)
    _GDIPlus_GraphicsClear($hGraphic, 0xFFFFFFFF)
    Wend

    [/autoit] [autoit][/autoit] [autoit]

    Func Pythagoras($length, $split, $dir)

    [/autoit] [autoit][/autoit] [autoit]

    If _IsPressed("20", $dll) Then ;hold pressed spacebar to abort current drawing
    $split = 0
    $dir = 0
    $length = 0
    EndIf
    If $split = 0 Then
    Pythagoras_Square($length)
    Else
    $dist_rel = Sqrt(3) / 2
    $degree = 30
    Pythagoras_Square($length)
    Forward_Only($length)
    Turn(-$dir * 1 * $degree)
    Pythagoras($length * $dist_rel, $split - 1, 1)
    Turn($dir * 3 * $degree)
    Forward_Only($length * $dist_rel)
    Pythagoras($length / 2, $split - 1, 1)
    Forward_Only(-$length * $dist_rel)
    Turn(-$dir * 2 * $degree)
    Forward_Only(-$length)
    EndIf
    ;Sleep(0)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Pythagoras_Square($length)
    Local $i
    For $i = 1 To 4
    Draw_and_Forward($length)
    Turn($dir * 90)
    Next
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Sierpinski_X($length, $split, $dir)
    ;FXF--FF--FF
    ;X -> --FXF++FXF++FXF--
    ;F -> FF

    [/autoit] [autoit][/autoit] [autoit]

    If _IsPressed("20", $dll) Then ;hold pressed spacebar to abort current drawing
    $split = 0
    $dir = 0
    $length = 0
    EndIf
    If $split = 0 Then
    ;~ Draw_and_Forward($length)
    Else
    $dist_rel = 2
    $degree = 60
    Turn(-$dir * 2 * $degree) ;--
    Sierpinski_F($length / $dist_rel, $split - 1, 1) ;F
    Sierpinski_X($length / $dist_rel, $split - 1, 1) ;X
    Sierpinski_F($length / $dist_rel, $split - 1, 1) ;F
    Turn($dir * 2 * $degree) ;++
    Sierpinski_F($length / $dist_rel, $split - 1, 1) ;F
    Sierpinski_X($length / $dist_rel, $split - 1, 1) ;X
    Sierpinski_F($length / $dist_rel, $split - 1, 1) ;F
    Turn($dir * 2 * $degree) ;++
    Sierpinski_F($length / $dist_rel, $split - 1, 1) ;F
    Sierpinski_X($length / $dist_rel, $split - 1, 1) ;X
    Sierpinski_F($length / $dist_rel, $split - 1, 1) ;F
    Turn(-$dir * 2 * $degree) ;--
    EndIf
    ;Sleep(0)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Sierpinski_F($length, $split, $dir)
    ;FXF--FF--FF
    ;X -> --FXF++FXF++FXF--
    ;F -> FF

    [/autoit] [autoit][/autoit] [autoit]

    If _IsPressed("20", $dll) Then ;hold pressed spacebar to abort current drawing
    $split = 0
    $dir = 0
    $length = 0
    EndIf
    If $split = 0 Then
    Draw_and_Forward($length)
    Else
    $dist_rel = 2
    $degree = 60
    Sierpinski_F($length / $dist_rel, $split - 1, 1) ;F
    Sierpinski_F($length / $dist_rel, $split - 1, 1) ;F
    EndIf
    ;Sleep(0)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Gosper_R($length, $split, $dir)
    ;F -> R or F -> L
    ;R -> R+L++L-R--RR-L+
    ;L -> -R+LL++L+R--R-L

    [/autoit] [autoit][/autoit] [autoit]

    If _IsPressed("20", $dll) Then ;hold pressed spacebar to abort current drawing
    $split = 0
    $dir = 0
    $length = 0
    EndIf
    If $split = 0 Then
    Draw_and_Forward($length)
    Else
    $dist_rel = Sqrt(7)
    $degree = 60
    Gosper_R($length / $dist_rel, $split - 1, 1) ;R
    Turn($dir * 1 * $degree) ;+
    Gosper_L($length / $dist_rel, $split - 1, 1) ;L
    Turn($dir * 2 * $degree) ;++
    Gosper_L($length / $dist_rel, $split - 1, 1) ;L
    Turn(-$dir * 1 * $degree) ;-
    Gosper_R($length / $dist_rel, $split - 1, 1) ;R
    Turn(-$dir * 2 * $degree) ;--
    Gosper_R($length / $dist_rel, $split - 1, 1) ;R
    Gosper_R($length / $dist_rel, $split - 1, 1) ;R
    Turn(-$dir * 1 * $degree) ;-
    Gosper_L($length / $dist_rel, $split - 1, 1) ;L
    Turn($dir * 1 * $degree) ;+
    EndIf
    ;Sleep(0)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Gosper_L($length, $split, $dir)
    ;F -> R or F -> L
    ;R -> R+L++L-R--RR-L+
    ;L -> -R+LL++L+R--R-L

    [/autoit] [autoit][/autoit] [autoit]

    If _IsPressed("20", $dll) Then ;hold pressed spacebar to abort current drawing
    $split = 0
    $dir = 0
    $length = 0
    EndIf
    If $split = 0 Then
    Draw_and_Forward($length)
    Else
    $dist_rel = Sqrt(7)
    $degree = 60
    Turn(-$dir * 1 * $degree) ;-
    Gosper_R($length / $dist_rel, $split - 1, 1) ;R
    Turn($dir * 1 * $degree) ;+
    Gosper_L($length / $dist_rel, $split - 1, 1) ;L
    Gosper_L($length / $dist_rel, $split - 1, 1) ;L
    Turn($dir * 2 * $degree) ;++
    Gosper_L($length / $dist_rel, $split - 1, 1) ;L
    Turn($dir * 1 * $degree) ;+
    Gosper_R($length / $dist_rel, $split - 1, 1) ;R
    Turn(-$dir * 2 * $degree) ;--
    Gosper_R($length / $dist_rel, $split - 1, 1) ;R
    Turn(-$dir * 1 * $degree) ;-
    Gosper_L($length / $dist_rel, $split - 1, 1) ;L
    EndIf
    ;Sleep(0)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Sierpinski_Carpet($length, $split, $dir)
    ;F
    ;F -> F+F-F-FF-F-F-fF
    ;f -> fff

    [/autoit] [autoit][/autoit] [autoit]

    If _IsPressed("20", $dll) Then ;hold pressed spacebar to abort current drawing
    $split = 0
    $dir = 0
    $length = 0
    EndIf
    If $split = 0 Then
    Draw_and_Forward($length)
    Else
    $dist_rel = 3
    $degree = 90
    Sierpinski_Carpet($length / $dist_rel, $split - 1, 1) ;F
    Turn($dir * 1 * $degree) ;+
    Sierpinski_Carpet($length / $dist_rel, $split - 1, 1) ;F
    Turn(-$dir * 1 * $degree) ;-
    Sierpinski_Carpet($length / $dist_rel, $split - 1, 1) ;F
    Turn(-$dir * 1 * $degree) ;-
    Sierpinski_Carpet($length / $dist_rel, $split - 1, 1) ;F
    Sierpinski_Carpet($length / $dist_rel, $split - 1, 1) ;F
    Turn(-$dir * 1 * $degree) ;-
    Sierpinski_Carpet($length / $dist_rel, $split - 1, 1) ;F
    Turn(-$dir * 1 * $degree) ;-
    Sierpinski_Carpet($length / $dist_rel, $split - 1, 1) ;F
    Turn(-$dir * 1 * $degree) ;-
    Sierpinski_Carpet_Forward_Only($length / $dist_rel, $split - 1, 1) ;f
    Sierpinski_Carpet($length / $dist_rel, $split - 1, 1) ;F
    EndIf
    ;Sleep(0)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Sierpinski_Carpet_Forward_Only($length, $split, $dir) ;f
    ;F
    ;F -> F+F-F-FF-F-F-fF
    ;f -> fff
    Forward_Only($length / $dist_rel) ;f
    Forward_Only($length / $dist_rel) ;f
    Forward_Only($length / $dist_rel) ;f
    ;Sleep(0)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Penta_Plexity($length, $split, $dir)
    ;F++F++F++F++F
    ;F -> F++F++F|F-F++F

    [/autoit] [autoit][/autoit] [autoit]

    If _IsPressed("20", $dll) Then ;hold pressed spacebar to abort current drawing
    $split = 0
    $dir = 0
    $length = 0
    EndIf
    If $split = 0 Then
    Draw_and_Forward($length)
    Else
    $dist_rel = ((Sqrt(5) + 1) / 2)^2
    $degree = 36
    Penta_Plexity($length / $dist_rel, $split - 1, 1) ;F
    Turn($dir * 2 * $degree) ;++
    Penta_Plexity($length / $dist_rel, $split - 1, 1) ;F
    Turn($dir * 2 * $degree) ;++
    Penta_Plexity($length / $dist_rel, $split - 1, 1) ;F
    Turn($dir * 5 * $degree) ;180°
    Penta_Plexity($length / $dist_rel, $split - 1, 1) ;F
    Turn(-$dir * 1 * $degree) ;-
    Penta_Plexity($length / $dist_rel, $split - 1, 1) ;F
    Turn($dir * 2 * $degree) ;++
    Penta_Plexity($length / $dist_rel, $split - 1, 1) ;F
    EndIf
    ;Sleep(0)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Arrowhead_R($length, $split, $dir)
    ;F -> R oder F -> L
    ;R -> -L+R+L-
    ;L -> +R-L-R+

    [/autoit] [autoit][/autoit] [autoit]

    If _IsPressed("20", $dll) Then ;hold pressed spacebar to abort current drawing
    $split = 0
    $dir = 0
    $length = 0
    EndIf
    If $split = 0 Then
    Draw_and_Forward($length)
    Else
    $dist_rel = 2
    $degree = 60
    Turn(-$dir * 1 * $degree) ;-
    Arrowhead_L($length / $dist_rel, $split - 1, 1) ;L
    Turn($dir * 1 * $degree) ;+
    Arrowhead_R($length / $dist_rel, $split - 1, 1) ;R
    Turn($dir * 1 * $degree) ;+
    Arrowhead_L($length / $dist_rel, $split - 1, 1) ;L
    Turn(-$dir * 1 * $degree) ;--
    EndIf
    ;Sleep(0)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Arrowhead_L($length, $split, $dir)
    ;F -> R oder F -> L
    ;R -> -L+R+L-
    ;L -> +R-L-R+

    [/autoit] [autoit][/autoit] [autoit]

    If _IsPressed("20", $dll) Then ;hold pressed spacebar to abort current drawing
    $split = 0
    $dir = 0
    $length = 0
    EndIf
    If $split = 0 Then
    Draw_and_Forward($length)
    Else
    $dist_rel = 2
    $degree = 60
    Turn($dir * 1 * $degree) ;+
    Arrowhead_R($length / $dist_rel, $split - 1, 1) ;R
    Turn(-$dir * 1 * $degree) ;-
    Arrowhead_L($length / $dist_rel, $split - 1, 1) ;L
    Turn(-$dir * 1 * $degree) ;-
    Arrowhead_R($length / $dist_rel, $split - 1, 1) ;R
    Turn($dir * 1 * $degree) ;+
    EndIf
    ;Sleep(0)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Triangle($length, $split, $dir)
    ;F--F--F
    ;F -> F--F--F--ff
    ;ff -> ff

    [/autoit] [autoit][/autoit] [autoit]

    If _IsPressed("20", $dll) Then ;hold pressed spacebar to abort current drawing
    $split = 0
    $dir = 0
    $length = 0
    EndIf
    If $split = 0 Then
    Draw_and_Forward($length)
    Else
    $dist_rel = 2
    $degree = 60
    Triangle($length / $dist_rel, $split - 1, 1) ;F
    Turn(-$dir * 2 * $degree) ;--
    Triangle($length / $dist_rel, $split - 1, 1) ;F
    Turn(-$dir * 2 * $degree) ;--
    Triangle($length / $dist_rel, $split - 1, 1) ;F
    Turn(-$dir * 2 * $degree) ;--
    Forward_Only($length / $dist_rel) ;f
    Forward_Only($length / $dist_rel) ;f
    EndIf
    ;Sleep(0)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Dragon($length, $split, $dir)
    ;F -> R
    ;R -> +R--L+
    ;L -> -R++L-

    [/autoit] [autoit][/autoit] [autoit]

    If _IsPressed("20", $dll) Then ;hold pressed spacebar to abort current drawing
    $split = 0
    $dir = 0
    $length = 0
    EndIf
    If $split = 0 Then
    Draw_and_Forward($length)
    Else
    $degree = 45
    $dist_rel = Sqrt(2)
    Turn($dir * $degree) ;+
    Dragon($length / $dist_rel, $split - 1, 1) ;R
    Turn(-$dir * 2 * $degree) ;--
    Dragon($length / $dist_rel, $split - 1, -1) ;L
    Turn($dir * $degree) ;+
    EndIf
    ;Sleep(0)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Levy_C($length, $split, $dir)
    ;F
    ;F -> +F--F+

    [/autoit] [autoit][/autoit] [autoit]

    If _IsPressed("20", $dll) Then ;hold pressed spacebar to abort current drawing
    $split = 0
    $dir = 0
    $length = 0
    EndIf
    If $split = 0 Then
    Draw_and_Forward($length)
    Else
    $degree = 45
    $dist_rel = 1.45
    Turn($dir * $degree) ;+
    Levy_C($length / $dist_rel, $split - 1, 1) ;F
    Turn(-$dir * 2 * $degree) ;--
    Levy_C($length / $dist_rel, $split - 1, 1) ;F
    Turn($dir * $degree) ;+
    EndIf
    ;Sleep(0)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Koch($length, $split, $dir)
    ;F--F--F
    ;F -> F+F--F+F

    [/autoit] [autoit][/autoit] [autoit]

    If _IsPressed("20", $dll) Then ;hold pressed spacebar to abort current drawing
    $split = 0
    $dir = 0
    $length = 0
    EndIf
    If $split = 0 Then
    Draw_and_Forward($length)
    Else
    $dist_rel = 3
    $degree = 60
    Koch($length / $dist_rel, $split - 1, 1) ;F
    Turn($dir * $degree) ;+
    Koch($length / $dist_rel, $split - 1, 1) ;F
    Turn(-$dir * 2 * $degree) ;--
    Koch($length / $dist_rel, $split - 1, 1) ;F
    Turn($dir * $degree) ;+
    Koch($length / $dist_rel, $split - 1, 1) ;F
    EndIf
    ;Sleep(0)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Peano($length, $split, $dir)
    ;F
    ;F -> F-F+F+F+F-F-F-F+F

    [/autoit] [autoit][/autoit] [autoit]

    If _IsPressed("20", $dll) Then ;hold pressed spacebar to abort current drawing
    $split = 0
    $dir = 0
    $length = 0
    EndIf
    If $split = 0 Then
    Draw_and_Forward($length)
    Else
    $dist_rel = 3
    $degree = 90
    Peano($length / $dist_rel, $split - 1, 1) ;F
    Turn(-$dir * $degree) ;-
    Peano($length / $dist_rel, $split - 1, 1) ;F
    Turn($dir * $degree) ;+
    Peano($length / $dist_rel, $split - 1, 1) ;F
    Turn($dir * $degree) ;+
    Peano($length / $dist_rel, $split - 1, 1) ;F
    Turn($dir * $degree) ;+
    Peano($length / $dist_rel, $split - 1, 1) ;F
    Turn(-$dir * $degree) ;-
    Peano($length / $dist_rel, $split - 1, 1) ;F
    Turn(-$dir * $degree) ;-
    Peano($length / $dist_rel, $split - 1, 1) ;F
    Turn(-$dir * $degree) ;-
    Peano($length / $dist_rel, $split - 1, 1) ;F
    Turn($dir * $degree) ;+
    Peano($length / $dist_rel, $split - 1, 1) ;F
    EndIf
    ;Sleep(0)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Turn ($degrees)
    $angle = $angle + ($degrees * $Pi_Div_180)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Draw_and_Forward($length)
    $x2 = $x1 + Cos($angle) * $length
    $y2 = $y1 + Sin($angle) * $length
    ;~ Local $red = ((Cos(1 * $x1 / 64) + 1) / 2) * 256
    ;~ Local $green = ((Cos(1.25 * $y2 / 64) + 1) / 2) * 256
    ;~ Local $blue = ((Cos(1.5 * $x2 / 64) + 1) / 2) * 256
    ;~ _GDIPlus_PenSetColor($Pen, "0xEF" & Hex($red, 2) & Hex($green, 2) & Hex($blue, 2)) ;Set the pen color
    _GDIPlus_PenSetColor($Pen, "0x68000000") ;Set the pen color
    _GDIPlus_GraphicsDrawLine($hGraphic, $x1, $y1, $x2, $y2, $Pen)
    $x1 = $x2
    $y1 = $y2
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Forward_Only($length)
    $x2 = $x1 + Cos($angle) * $length
    $y2 = $y1 + Sin($angle) * $length
    $x1 = $x2
    $y1 = $y2
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Draw_Text()
    Local $Text_Layout2
    Local $text_info = "UEZ 2009 ;-)"
    $Text_Layout = _GDIPlus_RectFCreate (0, $height - 1.75 * $font_size, 0, 0)
    $Text_Layout2 = _GDIPlus_RectFCreate ($width - StringLen($text_info) * $font_size * 0.67, $height - 1.75 * $font_size, 0, 0)
    _GDIPlus_GraphicsDrawStringEx ($hGraphic, $text, $Font, $Text_Layout, $String_Format, $Brush)
    _GDIPlus_GraphicsDrawStringEx ($hGraphic, $text_info, $Font, $Text_Layout2, $String_Format, $Brush)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Save_PIC()
    If _IsPressed("78", $dll) Then
    _GDIPlus_Save_to_Image(@ScriptDir & "\L-SF-Screenshot_" & @YEAR & @MON & @MDAY & "_" & @HOUR & @MIN & @SEC, $hGUI)
    If @error Then MsgBox(16, "ERROR", "Image was not saved!", 10)
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ; #FUNCTION# =============================================================================
    ; Name.............: _GDIPlus_Save_to_Image
    ; Description ...: INTERNAL FUNCTION - save drawn elements in GUI to file
    ; Syntax...........: _GDIPlus_Save_to_Image($file, $hWnd)
    ; Parameters ...: $file - filename
    ; $hWnd - handle to GUI
    ; Author .........: ptrex, ProgAndy, UEZ
    ; =========================================================================================
    Func _GDIPlus_Save_to_Image($file, $hWnd)
    Local $hDC, $memBmp, $memDC, $hImage, $w, $h, $size, $err, $sCLSID, $ext, $fExt
    If $file <> "" Or $hWnd <> "" Then
    $size = WinGetClientSize($hWnd)
    $w = $size[0]
    $h = $size[1]
    $hDC = _WinAPI_GetDC($hWnd)
    $memDC = _WinAPI_CreateCompatibleDC($hDC)
    $memBmp = _WinAPI_CreateCompatibleBitmap($hDC, $w, $h)
    _WinAPI_SelectObject ($memDC, $memBmp)
    _WinAPI_BitBlt($memDC, 0, 0, $w, $h, $hDC, 0, 0, 0x00CC0020) ; 0x00CC0020 = $SRCCOPY
    $hImage = _GDIPlus_BitmapCreateFromHBITMAP ($memBmp)
    $ext = "png,bmp,jpg,tif,gif"
    $fExt = StringRight($file, 3)
    If Not StringInStr($ext, $fExt) Then
    $CLSID = "PNG"
    $file &= ".png"
    Else
    $CLSID = $fExt
    EndIf
    $sCLSID = _GDIPlus_EncodersGetCLSID ($CLSID)
    If Not _GDIPlus_ImageSaveToFileEx ($hImage, $file, $sCLSID) Then $err = 1
    _GDIPlus_ImageDispose ($hImage)
    _WinAPI_ReleaseDC($hWnd, $hDC)
    _WinAPI_DeleteDC($memDC)
    _WinAPI_DeleteObject ($memBmp)
    If $err Then Return SetError(2, 0, 0)
    Return SetError(0, 0, 0)
    Else
    Return SetError(1, 0, 0)
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Exit()
    AdlibUnRegister("Save_PIC")
    ; Clean up resources
    _GDIPlus_PenDispose($Pen)
    _GDIPlus_GraphicsDispose ($hGraphic)
    _GDIPlus_FontDispose ($Font)
    _GDIPlus_FontFamilyDispose ($Font_Family)
    _GDIPlus_StringFormatDispose ($String_Format)
    _GDIPlus_BrushDispose($Brush)
    _GDIPlus_Shutdown ()
    DllClose($dll)
    Exit
    EndFunc

    [/autoit]

    Gruß,
    UEZ

  • AutoIt Windows Screenshooter v1.84 Build 2019-08-18

    • UEZ
    • 20. Oktober 2011 um 21:59

    Da es viele Zeilen Code sind, ist es relativ unübersichtlich geworden. Aber ob man den Code nachvollziehen kann, kann ich nicht beurteilen, da auch kaum Kommentare vorhanden sind. :whistling:

    Nichts ist unmöglich, na ja sagen wir mal fast ist nichts unmöglich... Wenn ich das alter Sack hinbekomme, dann sollten die Jungspunde das alle mal hinbekommen.

    Danke nochmals für dein Feedback!

    Gruß,
    UEZ

  • AutoIt Windows Screenshooter v1.84 Build 2019-08-18

    • UEZ
    • 20. Oktober 2011 um 21:22

    Aha. Dort habe ich auch nicht die 1.40'er Version angekündigt.

    Hier ist das Feedback eher bescheiden, darum gibt es meistens das Update eher auf der engl. Seite.

    Benutzt du auch das Programm? Denn es scheint so, als ob du der Einzige bist, der das Programm zu benutzen scheint. ;)

    Gruß,
    UEZ

  • AutoIt Windows Screenshooter v1.84 Build 2019-08-18

    • UEZ
    • 20. Oktober 2011 um 21:11

    Bitte! Freut mich, dass es dir gefällt! :D Mehr konnte ich nicht optimieren.

    Wie hast du vom Update erfahren?

    Gruß,
    UEZ

  • String ggf. um die letzten 4 Zeichen kürzen

    • UEZ
    • 18. Oktober 2011 um 21:43

    Hier eine andere Variante:

    [autoit]


    $string = "5,49 €"
    ConsoleWrite(StringRegExpReplace($string, "(.*)\h.*", "$1") & @CRLF)
    $string = "1,25 €"
    ConsoleWrite(StringRegExpReplace($string, "(.*)\h.*", "$1") & @CRLF)
    $string = "Kostenlos"
    ConsoleWrite(StringRegExpReplace($string, "(.*)\h.*", "$1") & @CRLF)

    [/autoit]

    Gruß,
    UEZ

  • Ordnername aus Path auslesen

    • UEZ
    • 15. Oktober 2011 um 23:35

    Welchen Ordnernamen willst du genau haben?`

    Gruß,
    UEZ

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™