• Offizieller Beitrag

    Ich wollte mal wieder etwas programmieren und da habe ich ein Stoppuhr-Programm geschrieben.
    Dazu habe ich die Timer-UDF benutzt, damit die Stoppuhr auch dann weiterläuft, wenn man das Fenster bewegt.
    Bei Programmstart wird die Anzeigefunktion 10x aufgerufen und die benötigte Zeit gemessen. Diese Zeit wird dann für den Timeraufruf benutzt, damit es auf langsameren Rechnern zu keinen Problemen mit dem Timeraufruf kommt.
    Ansonsten gibt es eine Pausenfunktion, man kann Rundenzeiten messen und diese Rundenzeiten dann auch in die Zwischenablage kopieren (Kontextmenü).

    Version 1.1 (07.02.2013):
    - Antialiasing für die Anzeige hinzugefügt.
    - Die Icons sind jetzt als Base64-Zeilen direkt im Script. Man kann also nur die Exe weitergeben und die Icons werden trotzdem angezeigt. Danke UEZ!

    Version 1.2 (08.02.2013):
    - Wenn man nach dem Klick auf Pause den Stop-Button anklickte, wurde die Zeit weitergezählt. Bug beseitigt!
    - Die "Icons" (PNG-Dateien) werden jetzt komplett aus dem Speicher heraus angezeigt. Ein speichern auf Festplatte findet nicht mehr statt. Danke UEZ! (Du stehst jetzt auch in den Infos) :thumbup:


    Screenshots:
    autoit.de/wcf/attachment/18987/ autoit.de/wcf/attachment/18992/

    Das Programm, das Script und die benötigten Icons befinden sich im ZIP-Archiv (Anhang).

  • Hi Oscar,

    der nächste Schritt wäre auch die Icons vom Speicher aufzurufen, ohne sie vorher auf die FP zu Speichern. ;)

    Was mir aufgefallen ist: wenn ich start drücke, läuft die Zeit. Wenn ich anschließend auf Pause drücke, ein wenig warte und auf Stop drücke, dann ist die Zeit zwischen Pause und Stop weiter gelaufen.

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

    • Offizieller Beitrag

    der nächste Schritt wäre auch die Icons vom Speicher aufzurufen, ohne sie vorher auf die FP zu Speichern. ;)


    Wenn Du mir sagst, wie ich das hinkriege. :rolleyes:

    Was mir aufgefallen ist: wenn ich start drücke, läuft die Zeit. Wenn ich anschließend auf Pause drücke, ein wenig warte und auf Stop drücke, dann ist die Zeit zwischen Pause und Stop weiter gelaufen.


    Oh, stimmt! Das ist ein Bug. Wird in der nächsten Version behoben sein.
    Das mit der Pausenfunktion ist sowieso etwas schwierig, weil man den Timer nicht anhalten/weiterlaufen lassen kann. Ich muss also während der Pausenzeit einen zweiten Timer die Pausenzeit stoppen lassen und diese ganzen Pausenzeiten dann vom Gesamttimer abziehen. Gefällt mir eigentlich nicht so wirklich. Vor allem ist das nicht sehr genau (da summieren sich die Befehlslaufzeiten). Wenn da jemand eine Alternative kennt, bitte melden!

  • Schaue mal, ob das hier passt:

    Spoiler anzeigen
    [autoit]


    #NoTrayIcon
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=Icons\Stop.ico
    #AutoIt3Wrapper_Outfile=Stoppuhr.exe
    #AutoIt3Wrapper_Res_Description=Stoppuhr
    #AutoIt3Wrapper_Res_Fileversion=1.1.0.0
    #AutoIt3Wrapper_Res_LegalCopyright=Oscar (http://www.autoit.de)
    #AutoIt3Wrapper_Res_Language=1031
    #AutoIt3Wrapper_UseUpx=y
    #AutoIt3Wrapper_UPX_Parameters=--best --lzma
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

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

    #include <GDIPlus.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <StaticConstants.au3>
    #include <Timers.au3>
    #include <WindowsConstants.au3>

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

    Opt('GuiOnEventMode', 1)
    Opt('MustDeclareVars', 1)

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

    Global $sProgName = 'Stoppuhr'
    Global $sProgVersion = '1.1.0.0'
    Global $sProgDate = '07.02.2013'

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

    _GDIPlus_Startup()
    Global Const $STM_SETIMAGE = 0x0172, $IMAGE_BITMAP = 0
    Global $hHBmp_Info = _GDIPlus_BMPFromMemory(_Infopng(), True)
    Global $hHBmp_Pause = _GDIPlus_BMPFromMemory(_Pausepng(), True)
    Global $hHBmp_Start = _GDIPlus_BMPFromMemory(_Startpng(), True)
    Global $hHBmp_Stop = _GDIPlus_BMPFromMemory(_Stoppng(), True)
    Global $hBmp_Stop = _GDIPlus_BMPFromMemory(_Stoppng())

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

    Global $aWeekday = StringSplit('Sonntag|Montag|Dienstag|Mittwoch|Donnerstag|Freitag|Samstag', '|', 1)
    Global $iStopTime, $iClock, $sLastDate, $hHelpGui, $hIcon_HelpGUI, $idAuthor1, $idAuthor2, $sLink1, $sLink2
    Global $iLaptime = 0, $iLastticks = 0, $iPauseTimer = 0, $aPauseTimer[1], $iPauseCount = 0, $fTimerStop = False

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

    Global $hGui = GUICreate(StringFormat('%s v%3.3s', $sProgName, $sProgVersion), 620, 380)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_CloseGui')
    GUISetBkColor(0xDDDDDD)
    ;~ GUISetIcon($sIconDir & '\Stop.ico', 0)
    Global $hIcon_GUI = _WinAPI_SetWindowTitleIcon($hBmp_Stop, $hGui)

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

    ;~ Global $ID_Icon = GUICtrlCreateIcon($sIconDir & '\Stop.ico', 0, 15, 4, 32, 32)
    Global $ID_Icon = GUICtrlCreatePic('', 15, 4, 32, 32)
    _hBmpToPicControl($ID_Icon, $hHBmp_Stop)

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

    Global $ID_Date = GUICtrlCreateLabel('', 60, 10, 290, 22, $SS_Left)
    GUICtrlSetFont(-1, 14, 800, 0, 'Courier New', 4)

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

    Global $ID_Clock = GUICtrlCreateLabel('', 310, 10, 250, 22, $SS_RIGHT)
    GUICtrlSetFont(-1, 14, 800, 0, 'Courier New', 4)

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

    ;~ Global $ID_Info = GUICtrlCreateIcon($sIconDir & '\Info.ico', 0, 578, 4, 32, 32)
    Global $ID_Info = GUICtrlCreatePic('', 578, 4, 32, 32)
    _hBmpToPicControl($ID_Info, $hHBmp_Info)
    GUICtrlSetTip(-1, 'Informationen über das Programm')
    GUICtrlSetOnEvent(-1, '_ShowHelp')

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

    Global $ID_Label = GUICtrlCreateInput('0', 10, 40, 600, 64, BitOR($ES_CENTER, $ES_READONLY), $WS_EX_STATICEDGE)
    GUICtrlSetFont(-1, 42, 800, 0, 'Courier New', 4)
    GUICtrlSetBkColor(-1, 0xFFFFAA)

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

    Global $ID_Laptime = GUICtrlCreateListView('Nr.|Gesamtzeit|Rundenzeit|Uhrzeit', 10, 110, 600, 220, $BS_DEFPUSHBUTTON)
    GUICtrlSetFont(-1, 14, 800, 0, 'Courier New', 4)

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

    Global $ID_Context = GUICtrlCreateContextMenu($ID_Laptime)
    GUICtrlCreateMenuItem('Rundenzeiten in die Zwischenablage kopieren...', $ID_Context)
    GUICtrlSetOnEvent(-1, '_CopyLaptimeToClip')

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

    Global $hLaptime = GUICtrlGetHandle($ID_Laptime)
    _GUICtrlListView_JustifyColumn($hLaptime, 0, 1)
    _GUICtrlListView_JustifyColumn($hLaptime, 1, 1)
    _GUICtrlListView_JustifyColumn($hLaptime, 2, 1)
    _GUICtrlListView_JustifyColumn($hLaptime, 3, 1)
    _GUICtrlListView_SetColumnWidth($hLaptime, 0, 80)
    _GUICtrlListView_SetColumnWidth($hLaptime, 1, 180)
    _GUICtrlListView_SetColumnWidth($hLaptime, 2, 180)
    _GUICtrlListView_SetColumnWidth($hLaptime, 3, 120)

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

    Global $ID_Start = GUICtrlCreateButton('Start', 10, 340, 140, 32)
    GUICtrlSetFont(-1, 11, 400, 0, 'Arial')
    GUICtrlSetOnEvent(-1, '_StartTimer')

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

    Global $ID_Pause = GUICtrlCreateButton('Pause', 170, 340, 140, 32)
    GUICtrlSetFont(-1, 11, 400, 0, 'Arial')
    GUICtrlSetOnEvent(-1, '_PauseTimer')

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

    Global $ID_Lap = GUICtrlCreateButton('Rundenzeit', 320, 340, 140, 32)
    GUICtrlSetFont(-1, 11, 400, 0, 'Arial')
    GUICtrlSetOnEvent(-1, '_Laptime')

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

    Global $ID_Stop = GUICtrlCreateButton('Stop', 470, 340, 140, 32)
    GUICtrlSetFont(-1, 11, 400, 0, 'Arial')
    GUICtrlSetOnEvent(-1, '_StopTimer')

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

    GUICtrlSetState($ID_Pause, $GUI_DISABLE)
    GUICtrlSetState($ID_Stop, $GUI_DISABLE)
    GUICtrlSetState($ID_Lap, $GUI_DISABLE)

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

    _ShowClock(0, 0, 0, 0)
    $iClock = _Timer_SetTimer($hGui, 250, '_ShowClock')
    GUISetState(@SW_SHOW, $hGui)

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

    Global $iTimer = TimerInit()
    For $i = 1 To 10
    _ShowTimer(0, 0, 0, 0)
    Next
    Global $iElapse = Int(TimerDiff($iTimer))
    _CreateHelp()

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

    GUICtrlSetData($ID_Label, _TicksToTimeFormat(0, '%hh:%mm:%ss.%ms'))
    GUICtrlSetState($ID_Start, $GUI_FOCUS)

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

    WinWaitClose($hGui)
    _Timer_KillAllTimers($hGui)
    Exit

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

    Func _CloseGui()
    _WinAPI_DeleteObject($hHBmp_Info)
    _WinAPI_DeleteObject($hHBmp_Pause)
    _WinAPI_DeleteObject($hHBmp_Start)
    _WinAPI_DeleteObject($hHBmp_Stop)
    _GDIPlus_BitmapDispose($hBmp_Stop)
    _WinAPI_DestroyIcon($hIcon_GUI)
    _GDIPlus_Shutdown()
    GUIDelete($hGui)
    EndFunc ;==>_CloseGui

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

    Func _ShowClock($hWnd, $Msg, $iIDTimer, $dwTime)
    #forceref $hWnd, $Msg, $iIDTimer, $dwTime
    Local $sDate = @MDAY & @MON & @YEAR
    GUICtrlSetData($ID_Clock, StringFormat('%02d:%02d:%02d', @HOUR, @MIN, @SEC))
    If $sDate <> $sLastDate Then
    $sLastDate = $sDate
    GUICtrlSetData($ID_Date, StringFormat('%s, %02d.%02d.%04d', $aWeekday[@WDAY], @MDAY, @MON, @YEAR))
    EndIf
    EndFunc ;==>_ShowClock

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

    Func _ShowTimer($hWnd, $Msg, $iIDTimer, $dwTime)
    #forceref $hWnd, $Msg, $iIDTimer, $dwTime
    If $fTimerStop Then Return
    Local $iTicks = TimerDiff($iTimer)
    For $i = 0 To $iPauseCount - 1
    $iTicks -= $aPauseTimer[$i]
    Next
    GUICtrlSetData($ID_Label, _TicksToTimeFormat($iTicks, '%hh:%mm:%ss.%ms'))
    EndFunc ;==>_ShowTimer

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

    Func _CopyLaptimeToClip()
    Local $sClipboard = ''
    For $i = 0 To $iLaptime - 1
    $sClipboard &= _GUICtrlListView_GetItemTextString($hLaptime, $i) & @CRLF
    Next
    ClipPut(StringReplace($sClipboard, '|', ' --- '))
    EndFunc ;==>_CopyLaptimeToClip

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

    Func _StartTimer()
    ;~ GUICtrlSetImage($ID_Icon, $sIconDir & '\Start.ico')
    ;~ GUISetIcon($sIconDir & '\Start.ico', 0, $hGui)
    _hBmpToPicControl($ID_Icon, 0)
    _hBmpToPicControl($ID_Icon, $hHBmp_Start)
    Global $iLaptime = 0, $iLastticks = 0, $iPauseTimer = 0, $aPauseTimer[1], $iPauseCount = 0
    GUICtrlSetData($ID_Stop, 'Stop')
    GUICtrlSetOnEvent($ID_Stop, '_StopTimer')
    GUICtrlSetState($ID_Start, $GUI_DISABLE)
    GUICtrlSetState($ID_Stop, $GUI_ENABLE)
    GUICtrlSetState($ID_Lap, $GUI_ENABLE)
    GUICtrlSetState($ID_Pause, $GUI_ENABLE)
    GUICtrlSetState($ID_Lap, $GUI_FOCUS)
    _GUICtrlListView_DeleteAllItems($hLaptime)
    $iTimer = TimerInit()
    $fTimerStop = False
    $iStopTime = _Timer_SetTimer($hGui, $iElapse, '_ShowTimer')
    EndFunc ;==>_StartTimer

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

    Func _DelResult()
    Global $iLaptime = 0, $iLastticks = 0, $iPauseTimer = 0, $aPauseTimer[1], $iPauseCount = 0
    GUICtrlSetData($ID_Label, _TicksToTimeFormat($iLastticks, '%hh:%mm:%ss.%ms'))
    GUICtrlSetData($ID_Stop, 'Stop')
    GUICtrlSetOnEvent($ID_Stop, '_StopTimer')
    GUICtrlSetState($ID_Start, $GUI_ENABLE)
    GUICtrlSetState($ID_Stop, $GUI_DISABLE)
    GUICtrlSetState($ID_Lap, $GUI_DISABLE)
    GUICtrlSetState($ID_Pause, $GUI_DISABLE)
    _GUICtrlListView_DeleteAllItems($hLaptime)
    GUICtrlSetState($ID_Start, $GUI_FOCUS)
    EndFunc ;==>_DelResult

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

    Func _PauseTimer()
    ;~ GUISetIcon($sIconDir & '\Pause.ico', 0, $hGui)
    ;~ GUICtrlSetImage($ID_Icon, $sIconDir & '\Pause.ico')
    _hBmpToPicControl($ID_Icon, 0)
    _hBmpToPicControl($ID_Icon, $hHBmp_Pause)
    $fTimerStop = True
    _Timer_KillTimer($hGui, $iStopTime)
    $iPauseTimer = TimerInit()
    GUICtrlSetState($ID_Lap, $GUI_DISABLE)
    GUICtrlSetData($ID_Pause, 'Weiter')
    GUICtrlSetOnEvent($ID_Pause, '_ContinueTimer')
    EndFunc ;==>_PauseTimer

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

    Func _ContinueTimer()
    ;~ GUISetIcon($sIconDir & '\Start.ico', 0, $hGui)
    ;~ GUICtrlSetImage($ID_Icon, $sIconDir & '\Start.ico')
    _hBmpToPicControl($ID_Icon, 0)
    _hBmpToPicControl($ID_Icon, $hHBmp_Start)
    $aPauseTimer[$iPauseCount] = TimerDiff($iPauseTimer)
    $iPauseCount += 1
    ReDim $aPauseTimer[$iPauseCount + 1]
    GUICtrlSetState($ID_Lap, $GUI_ENABLE)
    GUICtrlSetData($ID_Pause, 'Pause')
    GUICtrlSetOnEvent($ID_Pause, '_PauseTimer')
    $fTimerStop = False
    $iStopTime = _Timer_SetTimer($hGui, $iElapse, '_ShowTimer')
    EndFunc ;==>_ContinueTimer

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

    Func _Laptime()
    Local $iTicks = TimerDiff($iTimer), $iLasttime
    For $i = 0 To $iPauseCount - 1
    $iTicks -= $aPauseTimer[$i]
    Next
    $iLasttime = _TicksToTimeFormat($iTicks - $iLastticks, '%hh:%mm:%ss.%ms')
    $iLastticks = $iTicks
    $iLaptime += 1
    GUICtrlCreateListViewItem($iLaptime & '.|' & _TicksToTimeFormat($iTicks, '%hh:%mm:%ss.%ms') & '|' & $iLasttime & '|' & StringFormat('%02d:%02d:%02d', @HOUR, @MIN, @SEC), $ID_Laptime)
    _GUICtrlListView_EnsureVisible($hLaptime, $iLaptime - 1)
    Return $iTicks
    EndFunc ;==>_Laptime

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

    Func _StopTimer()
    ;~ GUISetIcon($sIconDir & '\Stop.ico', 0, $hGui)
    ;~ GUICtrlSetImage($ID_Icon, $sIconDir & '\Stop.ico')
    _hBmpToPicControl($ID_Icon, 0)
    _hBmpToPicControl($ID_Icon, $hHBmp_Stop)
    $fTimerStop = True
    _Timer_KillTimer($hGui, $iStopTime)
    Local $iTicks = _Laptime()
    GUICtrlSetData($ID_Label, _TicksToTimeFormat($iTicks, '%hh:%mm:%ss.%ms'))
    GUICtrlSetState($ID_Lap, $GUI_DISABLE)
    GUICtrlSetState($ID_Pause, $GUI_DISABLE)
    GUICtrlSetState($ID_Start, $GUI_ENABLE)
    GUICtrlSetData($ID_Pause, 'Pause')
    GUICtrlSetOnEvent($ID_Pause, '_PauseTimer')
    GUICtrlSetData($ID_Stop, 'Löschen')
    GUICtrlSetOnEvent($ID_Stop, '_DelResult')
    GUICtrlSetState($ID_Start, $GUI_FOCUS)
    EndFunc ;==>_StopTimer

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

    Func _ShowHelp()
    GUISetState(@SW_SHOW, $hHelpGui)
    EndFunc

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

    Func _CloseHelp()
    GUISetState(@SW_HIDE, $hHelpGui)
    EndFunc

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

    Func _CreateHelp()
    Local $sMsg, $iWidth = 590
    $hHelpGui = GUICreate($sProgName & ' - Hilfe', $iWidth + 20, 280, -1, -1, BitOR($WS_POPUPWINDOW, $WS_CAPTION), Default, $hGui)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_CloseHelp', $hHelpGui)
    ;~ GUISetIcon($sIconDir & '\Info.ico')
    GUISetBkColor(0xFFFFDD)
    $sMsg = 'Version: %s\t Anzeigetimer: %sms\nDatum: %s'
    GUICtrlCreateLabel(StringFormat($sMsg, $sProgVersion, $iElapse, $sProgDate), 80, 15, $iWidth, 40)
    GUICtrlSetFont(-1, 12, 600, 0, 'Verdana')
    ;~ GUICtrlCreateIcon($sIconDir & '\Start.ico', 0, 10, 15, 32, 32)
    Local $ID_IconHelp = GUICtrlCreatePic('', 10, 15, 32, 32)
    _hBmpToPicControl($ID_IconHelp, $hHBmp_Start)
    $sMsg = 'Autor "Stoppuhr": \tThomas Stephan'
    GUICtrlCreateLabel(StringFormat($sMsg), 10, 70, 320, 20)
    GUICtrlSetFont(-1, 10, 400, 0, 'Verdana')
    $sLink1 = 'mailto:oscar@elektronik-kurs.de'
    $idAuthor1 = GUICtrlCreateLabel($sLink1, 330, 70, 260, 20)
    GUICtrlSetOnEvent(-1, '_ShowLink')
    GUICtrlSetFont(-1, 10, 400, 4, 'Verdana')
    GUICtrlSetColor(-1, 0x0000FF)
    GUICtrlSetCursor(-1, 0)
    $sMsg = 'Autor der Icons: \tFatCow'
    GUICtrlCreateLabel(StringFormat($sMsg), 10, 100, 300, 20)
    GUICtrlSetFont(-1, 10, 400, 0, 'Verdana')
    $sLink2 = 'http://www.fatcow.com/'
    $idAuthor2 = GUICtrlCreateLabel($sLink2, 330, 100, 260, 20)
    GUICtrlSetOnEvent(-1, '_ShowLink')
    GUICtrlSetFont(-1, 10, 400, 4, 'Verdana')
    GUICtrlSetColor(-1, 0x0000FF)
    GUICtrlSetCursor(-1, 0)
    $sMsg = 'Rechtliches:'
    GUICtrlCreateLabel(StringFormat($sMsg), 10, 150, $iWidth, 20)
    GUICtrlSetFont(-1, 11, 800, 4, 'Verdana')
    $sMsg = '- Dieses Programm darf, zeitlich unbegrenzt, kostenlos genutzt werden!\n'
    $sMsg &= '- Eine evtl. Weitergabe muss kostenlos, vollständig und unverändert erfolgen!\n'
    $sMsg &= '- Änderungen am Programm dürfen nur durch den Autor vorgenommen werden!\n\n'
    GUICtrlCreateLabel(StringFormat($sMsg), 10, 170, $iWidth, 60)
    GUICtrlSetFont(-1, 11, 400, 2, 'Verdana')
    GUICtrlCreateButton('Ok', Int($iWidth / 2) - 40, 240, 80, 25, $BS_DEFPUSHBUTTON)
    GUICtrlSetOnEvent(-1, '_CloseHelp')
    GUICtrlSetFont(-1, 10, 400, 0, 'Arial')
    EndFunc

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

    Func _ShowLink()
    Switch @GUI_CtrlId
    Case $idAuthor1
    ShellExecute($sLink1)
    Case $idAuthor2
    ShellExecute($sLink2)
    EndSwitch
    EndFunc

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

    ;===============================================================================
    ; Function Name: _TicksToTimeFormat($iTicks, $sFormat = '%hh:%mm:%ss')
    ; Description:: Diese Funktion wandelt Millisekunden in ein anzugebenes Zeitformat um
    ; Parameter(s): $iTicks = Zeit in Millisekunden
    ; $sFormat:
    ; %ww für Wochen
    ; %dd für Tage
    ; %hh für Stunden
    ; %mm für Minuten
    ; %ss für Sekunden
    ; %ms für Millisekunden
    ; sonstige Zeichen, die dazwischen stehen, werden übernommen
    ; Requirement(s): -
    ; Return Value(s): Zeit im ausgewählten Format (String)
    ; Author(s): Oscar (http://www.autoit.de)
    ;===============================================================================
    Func _TicksToTimeFormat($iTicks, $sFormat = '%hh:%mm:%ss')
    Local $aTime[6], $sOut, $aTimeFormat[6] = ['ww', 'dd', 'hh', 'mm', 'ss', 'ms'], $aFormat
    $aTime[4] = Int($iTicks / 1000)
    $aTime[5] = $iTicks - $aTime[4] * 1000
    $aTime[0] = Int($aTime[4] / 604800)
    $aTime[4] = Mod($aTime[4], 604800)
    $aTime[1] = Int($aTime[4] / 86400)
    $aTime[4] = Mod($aTime[4], 86400)
    $aTime[2] = Int($aTime[4] / 3600)
    $aTime[4] = Mod($aTime[4], 3600)
    $aTime[3] = Int($aTime[4] / 60)
    $aTime[4] = Mod($aTime[4], 60)
    $aFormat = StringRegExp($sFormat, '%([^%]+)', 3)
    If Not IsArray($aFormat) Then Return SetError(1, 0, $iTicks)
    For $i = 0 To UBound($aFormat) - 1
    For $j = 0 To UBound($aTimeFormat) - 1
    If StringLeft($aFormat[$i], 2) = $aTimeFormat[$j] Then $sOut &= StringFormat('%0' & 2 + ($j = 5) & 'i', $aTime[$j]) & StringMid($aFormat[$i], 3)
    Next
    Next
    Return $sOut
    EndFunc ;==>_TicksToTimeFormat

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

    Func _hBmpToPicControl($iCID, $hBmp, $iFlag = 0)
    Local $hOldBmp
    $hOldBmp = GUICtrlSendMsg($iCID, $STM_SETIMAGE, $IMAGE_BITMAP, $hBmp)
    If $hOldBmp Then _WinAPI_DeleteObject($hOldBmp)
    If $iFlag Then _WinAPI_DeleteObject($hBmp)
    EndFunc ;==>_hBmpToPicControl

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

    ;======================================================================================
    ; Function Name: _GDIPlus_BMPFromMemory
    ; 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 _WinAPI_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 _WinAPI_BitmapCreateDIBFromBitmap() from WinAPIEx.au3
    ; Version: v0.98 Build 2012-08-29 Beta
    ;=======================================================================================
    Func _GDIPlus_BMPFromMemory($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 = _WinAPI_BitmapCreateDIBFromBitmap($hBitmap)
    _GDIPlus_BitmapDispose($hBitmap)
    Return $hHBmp
    EndIf
    Return $hBitmap
    EndFunc ;==>_GDIPlus_BMPFromMemory

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

    Func _WinAPI_BitmapCreateDIBFromBitmap($hBitmap) ;create 32-bit bitmap v5 (alpha channel supported)
    Local $tBIHDR, $aRet, $tData, $pBits, $hResult = 0
    $aRet = DllCall($ghGDIPDll, 'uint', 'GdipGetImageDimension', 'ptr', $hBitmap, 'float*', 0, 'float*', 0)
    If (@error) Or ($aRet[0]) Then Return 0
    $tData = _GDIPlus_BitmapLockBits($hBitmap, 0, 0, $aRet[2], $aRet[3], $GDIP_ILMREAD, $GDIP_PXF32ARGB)
    $pBits = DllStructGetData($tData, 'Scan0')
    If Not $pBits Then Return 0
    $tBIHDR = DllStructCreate( 'dword bV5Size;long bV5Width;long bV5Height;word bV5Planes;word bV5BitCount;dword bV5Compression;' & _ ;http://msdn.microsoft.com/en-us/library/…1(v=vs.85).aspx
    'dword bV5SizeImage;long bV5XPelsPerMeter;long bV5YPelsPerMeter;dword bV5ClrUsed;dword bV5ClrImportant;' & _
    'dword bV5RedMask;dword bV5GreenMask;dword bV5BlueMask;dword bV5AlphaMask;dword bV5CSType;' & _
    'int bV5Endpoints[3];dword bV5GammaRed;dword bV5GammaGreen;dword bV5GammaBlue;dword bV5Intent;' & _
    'dword bV5ProfileData;dword bV5ProfileSize;dword bV5Reserved')
    DllStructSetData($tBIHDR, 'bV5Size', DllStructGetSize($tBIHDR))
    DllStructSetData($tBIHDR, 'bV5Width', $aRet[2])
    DllStructSetData($tBIHDR, 'bV5Height', $aRet[3])
    DllStructSetData($tBIHDR, 'bV5Planes', 1)
    DllStructSetData($tBIHDR, 'bV5BitCount', 32)
    DllStructSetData($tBIHDR, 'bV5Compression', 0) ; $BI_BITFIELDS = 3, $BI_RGB = 0, $BI_RLE8 = 1, $BI_RLE4 = 2, $RGBA = 0x41424752
    DllStructSetData($tBIHDR, 'bV5SizeImage', $aRet[3] * DllStructGetData($tData, 'Stride'))
    DllStructSetData($tBIHDR, 'bV5AlphaMask', 0xFF000000)
    DllStructSetData($tBIHDR, 'bV5RedMask', 0x00FF0000)
    DllStructSetData($tBIHDR, 'bV5GreenMask', 0x0000FF00)
    DllStructSetData($tBIHDR, 'bV5BlueMask', 0x000000FF)
    DllStructSetData($tBIHDR, 'bV5CSType', 2) ; LCS_WINDOWS_COLOR_SPACE = 2
    DllStructSetData($tBIHDR, 'bV5Intent', 4) ; $LCS_GM_IMA
    $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', $aRet[2] * $aRet[3] * 4, 'ptr', DllStructGetData($tData, 'Scan0'))
    $hResult = $hResult[0]
    Else
    $hResult = 0
    EndIf
    _GDIPlus_BitmapUnlockBits($hBitmap, $tData)
    $tData = 0
    $tBIHDR = 0
    Return $hResult
    EndFunc ;==>_WinAPI_BitmapCreateDIBFromBitmap

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

    ;======================================================================================
    ; Function Name: _WinAPI_SetWindowTitleIcon
    ; Description: Loads an image, scales it to desired width or height and creates and icon handle
    ;
    ; Parameters: $sFile: image file to be loaded or bitmap handle
    ; $hWnd: GUI handle where the new icon should be displayed
    ; $iW: new image (icon) width. Default values is 32
    ; $iH: new image (icon) height. Default values is 32
    ;
    ; Requirement(s): GDIPlus.au3, _WinAPI_GetClassLongEx() and _WinAPI_SetClassLongEx()
    ; Return Value(s): Success: HICON handle, Error: 0 (see below)
    ; Error codes: 1: Code is running as x64 - not supported yet
    ; 2: $sFile value is empty
    ; 3: $hWnd is not a windows handle
    ; 4: filename doesn't exist or $sFile is not a valid bitmap handle
    ; 5: unable to create image from file
    ; 6: unable to create thumbnail from image handle
    ; 7: unable to create HICON from bitmap handle
    ; 8: unable to set ClassLongEx from GUI handle
    ;
    ; Limitation: only x86 compatible currently
    ;
    ; Author(s): UEZ, Yashied for _WinAPI_GetClassLongEx() and _WinAPI_SetClassLongEx()
    ; Version: v0.97 Build 2012-06-03 Beta
    ;
    ; Remarks: When finished release icon with _WinAPI_DestroyIcon()
    ;=======================================================================================
    Func _WinAPI_SetWindowTitleIcon($sFile, $hWnd, $iW = 32, $iH = 32)
    If @AutoItX64 Then Return SetError(1, 0, 0)
    If $sFile = "" Then Return SetError(2, 0, 0)
    If Not IsHWnd($hWnd) Then Return SetError(3, 0, 0)
    Local Const $GCL_HICON = -14, $GCL_HICONSM = -34
    Local $hImage
    If Not FileExists($sFile) Then
    If _GDIPlus_ImageGetType($sFile) = -1 Then Return SetError(4, @error, 0)
    $hImage = $sFile ;interpret $sFile as a bitmap handle
    Else
    $hImage = _GDIPlus_ImageLoadFromFile($sFile)
    If @error Then Return SetError(5, @error, 0)
    EndIf
    Local $aRes = DllCall($ghGDIPDll, "uint", "GdipGetImageThumbnail", "handle", $hImage, "uint", $iW, "uint", $iH, "int*", 0, "ptr", 0, "ptr", 0)
    If @error Then Return SetError(6, @error, 0)
    Local $hImageScaled = $aRes[4]
    $aRes = DllCall($ghGDIPDll, "uint", "GdipCreateHICONFromBitmap", "handle", $hImageScaled, "int*", 0)
    If @error Then
    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_ImageDispose($hImageScaled)
    Return SetError(7, @error, 0)
    EndIf
    Local $hIconNew = $aRes[2]
    _WinAPI_SetClassLongEx($hWnd, $GCL_HICONSM, $hIconNew)
    If @error Then
    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_ImageDispose($hImageScaled)
    Return SetError(8, @error, 0)
    EndIf
    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_ImageDispose($hImageScaled)
    Return $hIconNew
    EndFunc

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

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _WinAPI_SetClassLongEx
    ; Description....: Replaces the specified value into the specified window belongs.
    ; Syntax.........: _WinAPI_SetClassLongEx ( $hWnd, $iIndex, $iNewLong )
    ; Parameters.....: $hWnd - Handle to the window.
    ; $iIndex - The value to be replaced. This parameter can be one of the following values.
    ;
    ; $GCL_CBCLSEXTRA
    ; $GCL_CBWNDEXTRA
    ; $GCL_HBRBACKGROUND
    ; $GCL_HCURSOR
    ; $GCL_HICON
    ; $GCL_HICONSM
    ; $GCL_HMODULE
    ; $GCL_MENUNAME
    ; $GCL_STYLE
    ; $GCL_WNDPROC
    ;
    ; $iNewLong - The replacement value.
    ; Return values..: Success - The previous value.
    ; Failure - 0 and sets the @error flag to non-zero.
    ; Author.........: Yashied
    ; Modified.......:
    ; Remarks........: None
    ; Related........:
    ; Link...........: @@MsdnLink@@ SetClassLong
    ; Example........: Yes
    ; ===============================================================================================================================
    Func _WinAPI_SetClassLongEx($hWnd, $iIndex, $iNewLong)
    Local $Ret
    If @AutoItX64 Then
    $Ret = DllCall('user32.dll', 'ulong_ptr', 'SetClassLongPtrW', 'hwnd', $hWnd, 'int', $iIndex, 'long_ptr', $iNewLong)
    Else
    $Ret = DllCall('user32.dll', 'ulong', 'SetClassLongW', 'hwnd', $hWnd, 'int', $iIndex, 'long', $iNewLong)
    EndIf
    If (@error) Or (Not $Ret[0]) Then Return SetError(1, 0, 0)
    Return $Ret[0]
    EndFunc ;==>_WinAPI_SetClassLongEx

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

    ;Code below was generated by: 'File to Base64 String' Code Generator v1.11 Build 2012-10-13

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

    Func _Infopng($bSaveBinary = False)
    Local $Infopng
    $Infopng &= 'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAACvlBMVEXw8PD////s7Ozq6urc3NyEpcXr6+tai7ZVhbJuocrl7/fa6PN/osN1lrdcjbhdj7pkl8BWh7RklsBYibVLeKPAwMBmmMFkhaVJfava2trj4+Pq8vhjjrY+caOHp8eFpsWFpseKqchOga/x+PxJfa1HeahnkrqNq8pplbxMfq6IqMdOgK5ahrH9/v9hjbVolLvq8/hShbJbj7tYirVQhLH3+/7z+PtsmL+txdpai7eJqchYirZQhLP2+fxAeaxCdaZbjblkj7hUh7VNf638/v/3+/3+//8/c6Ronshqlr1EealWibddjrr7/f9ajblMg7Py+Pzp8vh9q9FroMt6nsHe7PZGfa97q9F5nsHc6/VYjLllmMNVibdTiLfu9fnj7vVPg7HT4/BKf69+ocPt9vvj7vb1+/5jl8FxnsVkl8Jgk72nwdpgkr1Vi7jf6vTg7fR4pcvb29vDw8NkmMOIqMj0+f3p8vlzn8ddkb1ilcBNfqtilb9YjrtHe6rb6fN8oMJ+osN6n8Lm8Pd0oshgk75Mf65RgrBakLzf7PXW5fFnmsS/v7/v9/x1o8lhlMF4nsJmmcNjlsFZj71BdKRWird9oMLl8fjc6vR7qM92pMpsoMpnmcPW5vHi7vbZ6PLX5/F8ocLq9frd6/R5psxlmcRhlsKBn7til8Lo8vrj8Pd8qtBmm8Vpncdcjrrh7/drn8nX5/Lw9vv6/f5fkLz9//95n8HU5vHd7PeGp8fh4eFmkbm6urpNgK1Pfam5ubl0lrdqnsdhkr1fkLuDpcVPfqnX19dMeKO4uLhtmsBVf6b7//9jhKTz+fxqmMB2mLlLeaRyj6tQfqlQfaiFor+BpMVpmMBLe6rw9/uCpMXx+Pvv9/v0+fxrmsH1+v1pjrI/cqRlhqVlhqZrmcFUfqXZ2dm0tLRilL5lhaWysrLi4uKCuC2FAAAAAXRSTlMAQObYZgAAAnhJREFUeF51kFO3Y00UALNjXNu2bdu2bdu2bdvG2LZtfPgXczK5mcxdZ6Ueeu3dVf3SmFNgn0tKPiJi2IK7qAygfBnL3ssCgiy7AnfDDEBDA8CMUaB9AYCWtbUWQAG9QHs1AAnFsjJFCQA1pEB5KQDbSnt1dftKWwApZsHyZ8DpnMgFETc35DjnBGdOF7inMuCp1NikagJgotrUqOQJMpzYv/wzadjTliOTFQBBgUyW094DaVZB/EQAQ5UYXn7eONDUhDhkiFExBAKzwHJeB0tXXX4SSd8gHSDdQJ9E4td1tYTrjILISQAjYztTLi4uc4sgK6sgC3NkNLUzNkIKIvJ+iXCweyfChpube3MAHBwdHWBgE1lsIu7sHhCWsBgx57fiD909rtHx8vbx9fXx9vq9eLi//Pj6sxgG7/zu/Yew/at09iOjoqOjIk+WsG8P7r3CY/BP3iTppOil/YOQkSmelSWemUGf0/RSdJJe3M3FiOU95igsKi4p5ePjK6+gVlVRK8qRsbSkuKiQ477gWQxW9LxAjXxdfQOPkBBPc0tra0szfWqor5OvEW4XxSHfePO2AEcHtbMrvKe3jxYbS+vr7Qnv6qR2cAgL4pGPoBeXBOITEkeTx1MnpyYmpiZTx5NHExPiGZ5ZzMxm5yy05S8vLi7nty3kZM/OnHhmcWtwZW5+feMKwsb6/NzK4L8nnlVUDw2PuIxRKGMuI8ND1SzPKmpXaWvbFMr2Gm21lulPF4db037+/n7TW4cMjy4CAo+Cg48CA5geXYSE7uyEhjA9urh9q/v4uPsLy6OK81/7+7+3szyq+JH38z9BUZZHQfwfn3sWd+rqF7uX7XMpVMgRAAAAAElFTkSuQmCC'
    Local $bString = Binary(_Base64Decode($Infopng))
    If $bSaveBinary Then
    Local $hFile = FileOpen(@ScriptDir & "\Info.png", 18)
    FileWrite($hFile, $bString)
    FileClose($hFile)
    EndIf
    Return $bString
    EndFunc ;==>_Infopng

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

    Func _Pausepng($bSaveBinary = False)
    Local $Pausepng
    $Pausepng &= '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'
    $Pausepng &= 'wdDsbIQQNl1Jz6kijuNwjKy4fXmPpxcuQtPj+WZxRQW4wXp9TmdnJxK9dt29sBSXKR0rrmjE+P0oqgr0k0r5ZxuNYRhkqbi4OBaLX/r2MvYBKMIVOj4x4Si0YwjRQGBATxUvYx8knFUI8oYLiCaL0NeVPJSUmmFApzovLw95B05v37fhcDge5y2WLCTNZrNitKDQgXUjPi/sSFQyG6J2IdH28kripcU05dwIUmwjUcgJ4Aa8PwwODlotFlyVOGgZVpsMAyYCD3JF3ERGTYMioikF1yLtldHXlYJqmN8AoEEGZsMAbqXp6emffrqGv8hro6N6sYINlhINhjUSnDCaoJEoYqAUs9lqoGbR15UyZZhL8pxc5ebm4iZBxux2++zsLP5ucO6nzvbT39M0a7ZaWI0PVi9kQKLP6UqK1W7A+Q2kOEcEsAF6wTZAU9ttZmbGeiXQ6T6tKpoGDGexoF1rz7rPpJS5ZloT7ffxVwqWDA8Po9VNAuSmhECTUiLVyAH+VBjq1wsILy0txb9XemnggMnJyUkpYRVKJOC/oirevSyuPyMAAAAASUVORK5CYII='
    Local $bString = Binary(_Base64Decode($Pausepng))
    If $bSaveBinary Then
    Local $hFile = FileOpen(@ScriptDir & "\Pause.png", 18)
    FileWrite($hFile, $bString)
    FileClose($hFile)
    EndIf
    Return $bString
    EndFunc ;==>_Pausepng

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

    Func _Startpng($bSaveBinary = False)
    Local $Startpng
    $Startpng &= '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'
    $Startpng &= 'W3ibRasItwNtZOXzP7O2tkcya2397pnFi4ENmUpoU1MTnhs2bIBDkZVv/3UP3SlMEUQAcyBgl5GSWFn/zf5sZVyZIunI0oIFC/z+QOf3/8Y9CErFLtjsdqNhDrZYBjTVWjjO43nosNkGh52Mgoi4wywjI0JMC/RnLzbnr6bw1kNzo9GeqBhCk7Db7YODg+0d3wN5g8Gg02nxRtLrE8BGQkF+YNvj8brG7QPO0Pkh/WsvZQ+O+5HANIPmQs2N/NX0woULIQWRaATTaCNRUIS97p67fX19CTodXpXwhWGjh1FpyK/f+/A/XiDxrKggarUy5SfqCzVNsdopkPvHCO/V3t7emzdv1tXVlZf/9fDhov0H3993oHB6gMViRUXFuXPncgovHWkNFbUFXzhYV19fjzc8xGM+vB5D+JYaGRnp7u62Wq34JKitra2OIbBYxFZLS8v6Q5eKOsT178VpjzfweMKXIT5SAQkC6okhsFjEFuZvlzb+8oPGWO3xBv4/wosTQaB8o9qfrAGHwwEbQ0NDUe3x9F+H0i8LzzhyEQAAAABJRU5ErkJggg=='
    Local $bString = Binary(_Base64Decode($Startpng))
    If $bSaveBinary Then
    Local $hFile = FileOpen(@ScriptDir & "\Start.png", 18)
    FileWrite($hFile, $bString)
    FileClose($hFile)
    EndIf
    Return $bString
    EndFunc ;==>_Startpng

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

    Func _Stoppng($bSaveBinary = False)
    Local $Stoppng
    $Stoppng &= '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'
    $Stoppng &= 'xCQW0IRPnFBoDMPAS2lpaV6v7+69/6EOECJcob19faaUZEzBGggIQq7iRYrjGPQmIZAJXsKMHCWIhDoxMRF+B05j0z2Xy+Xz8TqdFk4zGPSYNaaYsK/L3gqeAIGCYNGdKBISCbzjLIhEG46CTwDX0vqwra1Nr9PhqsRBy7DKYiCqKGiQ4MdNxDFR/FgjBJmenADQCAYuURDgVhocHHzy5Cm+Ip92d4eSFdFgCT9NLwtQcJEKaBNcBCFFZMZ4glhfJSQk4CaBx5KTk0dGRvB1g3M/crZf/i9Jshq9jiXAOlGQQaxyA05KEI05LAAHwotoAzRSbsPDw/oHjhrrZRnOfo6gXNQsGTnsXkywpaOjA+8I5WQ2kFOmTMnIyGCIFxcEHDvx7TVufGK+YOX/AVpHkFZH85wiAAAAAElFTkSuQmCC'
    Local $bString = Binary(_Base64Decode($Stoppng))
    If $bSaveBinary Then
    Local $hFile = FileOpen(@ScriptDir & "\Stop.png", 18)
    FileWrite($hFile, $bString)
    FileClose($hFile)
    EndIf
    Return $bString
    EndFunc ;==>_Stoppng

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

    Func _Base64Decode($sB64String)
    Local $struct = DllStructCreate("int")
    Local $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $sB64String, "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", $sB64String, "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]

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯