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. sccssf

Beiträge von sccssf

  • ControlSend und das #

    • sccssf
    • 9. Mai 2020 um 09:35
    Zitat von autoiter

    Hallo sccssf

    Schau dir mal die Hilfen zu ControlSend und Send an. Bei Send ist beschrieben, wie man bestimmte Steuerzeichen escaped.

    Ok Danke in Send steht es in ControlSend ist es angedeutet nur kein Bezug auf #.

    Wenn man es liest ist es einfach.

    Zitat von Musashi

    ControlSend("C:\plink\plink.exe","","","*8310#1", 1) ; 1 = $SEND_RAW

    Danke an euch Beide und wünsche ein schönes Wochenende.

  • ControlSend und das #

    • sccssf
    • 9. Mai 2020 um 00:07

    Hallo an alle,

    schreibe gerade ein kleines Skript was meine TK-Anlage steuern soll.

    Sprich ich steuere plink.exe an. Also nichts wildes.

    Code
    Func UML_aus()
    $itest1 = ShellExecute("C:\plink\plink.exe","-telnet 192.168.xxx.xxx")
    Sleep (2000)
    ControlSend("C:\plink\plink.exe","","","*8310#1")
    ProcessClose($itest1)
    
    EndFunc


    Nur kann ich das "#" nicht schicken.

    Schreibe ich von Hand im Fenster # geht es. Liegt also wirklich an ControlSend.

    Danke für die Hilfe.

  • Programm neu Starten damit Haupt GUI neugeschrieben wird

    • sccssf
    • 18. März 2019 um 19:10

    Habe jetzt das ganze als UDF eingebunden.

    https://www.autoitscript.com/forum/topic/111215-restart-udf/

    und die Einstellung deaktiviert und das Skript läuft sauber.

    Wobei ich nicht ganz verstehe warum auf der CMD Line es nicht sauber läuft.

    Ich habe jetzt den Trick benutzt, das ich alles Falsche nicht beachte.

    Damit läuft mein Skript erstmal "sauber"

    Danke

    Code
                Case Else
                    MsgBox(0x40000, 'Ungültige Option', _
                            'Command used:' & @CRLF & $CMDLINERAW & @CRLF & _
                            @CRLF & 'Benutzen Sie /? für mehr Informationen.')
  • Programm neu Starten damit Haupt GUI neugeschrieben wird

    • sccssf
    • 16. März 2019 um 02:28

    Hallo,

    schreibe an meinem Programm und möchte eine andere HauptGui schreiben.

    Habe die Funktion hier gefunden.

    AutoIt Windows Screenshooter v1.82 Build 2019-02-03

    Original Code

    Code
    Func _ScriptRestart($fExit = 1) ;thanks to Yashied
        Local $pid
        If Not $__Restart Then
            If @Compiled Then
                $pid = Run(@ScriptFullPath & ' ' & $CmdLineRaw, @ScriptDir, Default, 1)
            Else
                $pid = Run(@AutoItExe & ' "' & @ScriptFullPath & '" ' & $CmdLineRaw, @ScriptDir, Default, 1)
            EndIf
            If @error Then
                Return SetError(@error, 0, 0)
            EndIf
            StdinWrite($pid, @AutoItPID)
        EndIf
        $__Restart = 1
        If $fExit Then
            Sleep(50)
            Exit
        EndIf
        Return 1
    EndFunc   ;==>_ScriptRestart
    Alles anzeigen

    Dies habe ich bei mir auch versucht einzubauen und ja es klappt allerdings nicht stabil.

    Entweder es geht, dann geht es mal wieder nicht.

    Dann kommt der Fehler beim Start und der Error wird bei mir so ausgewiesen.

    "C:\user\peter\Desktop\Timmer\Spielzeit ohne.a3" /ErrorStdOut "C:\user\peter\Desktop\Timmer\Spielzeit ohne.a3""

    dann startet das Programm wieder neu mit nochmal dem gleichen Fehler

    und dann startet die Software wie sie soll.

    Ich verstehe nicht woher der Fehler kommt.

    Bei jedem Start versuch bleibt auch ein Prozess "makecab.de" . Dieser beendet sich nie.


    Mein Projekt im Anhang.

    Danke für die Hilfe

    Dateien

    _ProgressEx.au3 8,6 kB – 328 Downloads Spielzeit ohne.au3 34,11 kB – 355 Downloads _DateiEx.au3 136,03 kB – 360 Downloads
  • Turnier Timer

    • sccssf
    • 16. März 2019 um 02:11

    So Global habe ich geändert. alpines so besser ?

    Habe zur Übersichtlichkeit die Globel zum großen Teil einzeln geschrieben.

    Hab den Code mal angehängt.

    Das mit den Fenster versuche ich anders zu lösen.

    Dazu schreibe ich einen anderen Beitrag.

    Dateien

    _DateiEx.au3 136,03 kB – 361 Downloads _ProgressEx.au3 8,6 kB – 360 Downloads Spielzeit ohne.au3 34,11 kB – 373 Downloads
  • Turnier Timer

    • sccssf
    • 15. März 2019 um 21:42

    Dies mit den Fehlern versteh ich nicht. (Hast du meine include von Post 2 geladen?)

    ############################################

    AutoIt3 Syntax Checker v3.3.14.2 Copyright (c) 2007-2013 Tylo & AutoIt Team

    C:\Users\Peter\Desktop\Timer\Spielzeit ohne.au3 - 0 error(s), 0 warning(s

    ############################################

    Gut die Variable kann ich umschreiben und vorher erstellen.

    Das mit dem ein und ausblenden mache ich eigentlich mit dem "Einstellmenü".

    Nun möchte ich allerdings mein HauptGUI unterschiedlich gestalten und nach dem Speichern neuzeichen.

    Zitat von alpines

    Ehrlich gesagt blicke ich durch deinen Code nicht wirklich durch. Du solltest ihn auf jeden Fall umstrukturieren denn du hast einige kritische Fehler drin.

    Definiere niemals globale Variablen in Funktionen! Au3 Check rastet komplett aus und du kannst Bugs nur sehr schwierig zurückverfolgen. Du darfst dort nur den Wert setzen!

    Definiere niemals statische GUIs in Funktionen! Erzeuge das Fenster vorher und verstecke es, wenn du es brauchst setzt du die Daten und zeigst es an und versteckst das andere.

    Wenn du letzteres anwendest brauchst du auch nicht ständig neue Events zu setzen. Du kannst die Funktion einmal registrieren und dabei belassen.

    Die Zuordnung verschwindet nicht wenn du die GUI @SW_HIDEst und dann wieder @SW_SHOWst.

  • Turnier Timer

    • sccssf
    • 15. März 2019 um 20:47

    Hallo,

    hatte heute wieder etwas Zeit um an meinem Code zuarbeiten.

    Ich möchte im Einstellmenü verschiedene GUI einstellen und dann "neuzeichen"

    Dies geht auch im Prinzip.

    Die MsgBox Funktionen sind nur zum testen.

    Nach dem Speicher in der Funktion

    Code
    _settings_save()
    ...
    GUIDelete($hGui)
    GUIDelete($SettingGui)
    _Fenster()
    _ResetTimer()

    Wird zwar ein neues Fenster gezeichnet nur leider gehen keine Controlls mehr

    z.B.

    Global $Setting_exit = GUICtrlCreateMenuItem("Ende", $Setting_Menu)

    GUICtrlSetOnEvent(-1, "_Exit")

    Was mache ich da falsch?

    Danke für die Hilfe

    SCCSSF

    Code
    Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=stopwatch.ico
    #AutoIt3Wrapper_Outfile=Spielzeit-Timer.exe
    #AutoIt3Wrapper_Res_Description=Spielzeit-Timer
    #AutoIt3Wrapper_Res_Fileversion=1.0.0.0
    #AutoIt3Wrapper_Res_LegalCopyright=Oscar (www.autoit.de)/geändert SCCSSF
    #AutoIt3Wrapper_Res_Language=1031
    #AutoIt3Wrapper_Res_Icon_Add=stopwatch.ico
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    
    #Region Includes
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <Sound.au3>
    #include <StaticConstants.au3>
    #include <Timers.au3>
    #include <WinAPI.au3>
    #include <WinAPIGdi.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>
    #include <Misc.au3>
    #include <GuiButton.au3>
    #include <EditConstants.au3>
    #include '_ProgressEx.au3'
    #include '_DateiEx.au3'
    #EndRegion Includes
    
    #Region single
    If _Singleton("Timer", 1) = 0 Then
        Exit
    EndIf
    #EndRegion single
    
    #Region Optionen
    ;#NoTrayIcon
    Opt('MustDeclareVars', 1)
    Opt('TrayMenuMode', 1)
    Opt('GUIOnEventMode', 1)
    Opt('TrayOnEventMode', 1)
    #EndRegion Optionen
    
    #Region Startparameter
    ;==> Übergabe der Start Parameter
    ;==> Hilfe "/?"
    ;==> Parameter 1 Spielzeit "/t"
    ;==> Parameter 2 Pausenzeit "/p"
    ;==> Parameter 3 Runden "/r"
    
    Local $iTimeCmd, $iPauseCmd, $iRoundCmd
    Global $iTimeCmdS, $iPauseCmdS, $iRoundCmdS
    If $CMDLINE[0] Then
        For $i = 1 To $CMDLINE[0]
            Switch $CMDLINE[$i]
                Case '/?'
                    MsgBox(0x40000, @ScriptName & ' Hilfe', _
                            'Steuerbefehle zum Übertragen der Zeiten per Kommandoaufruf (cmd):' & @CRLF _
                             & @CRLF & '/t <Spielzeit in Sekunden>' _
                             & @CRLF & @TAB _
                             & @CRLF & '/p <Pausenzeit in Sekunden>')
                    Exit
                Case '/t'
                    If $CMDLINE[0] > $i Then
                        $i += 1
                        $iTimeCmd = Number(StringRegExpReplace($CmdLine[$i], '(\d+)', '\1'))
                        If $iTimeCmd <> 0 Then
                            $iTimeCmdS = $iTimeCmd
                        EndIf
                    EndIf
    
                Case '/p'
                    If $CMDLINE[0] > $i Then
                        $i += 1
                        $iPauseCmd = Number(StringRegExpReplace($CmdLine[$i], '(\d+)', '\1'))
                        If $iPauseCmd <> 0 Then
                            $iPauseCmdS = $iPauseCmd
                        EndIf
                    EndIf
                Case '/r'
                    If $CMDLINE[0] > $i Then
                        $i += 1
                        $iRoundCmd = Number(StringRegExpReplace($CmdLine[$i], '(\d+)', '\1'))
                        If $iRoundCmd <> 0 Then
                            $iRoundCmdS = $iRoundCmd
                        EndIf
                    EndIf
    ;~           Case '/x'
    ;~           Case '/x'
    ;~           Case '/x'
                Case Else
                    MsgBox(0x40000, 'Ungültige Option', _
                            'Command used:' & @CRLF & $CMDLINERAW & @CRLF & _
                            @CRLF & 'Benutzen Sie /? für mehr Informationen.')
                    Exit
            EndSwitch
        Next
    EndIf
    #EndRegion Startparameter
    
    _GDIPlus_Startup()
    
    #Region Konstanten deklarieren
    Global Const $sAppTitle = 'Spielzeit-Timer'
    Global Const $sAppVersion = '0.3'
    Global Const $sAppDate = '28.02.2019'
    Global Const $sAppAuthor = 'Oscar (www.autoit.de) / SCCCSF'
    Global Const $sAppDir = @AppDataDir & '\SP-Timer\'
    If Not FileExists($sAppDir) Then MsgBox(262208, "Erster Start", "Unter Menü -> Einstellungen können Sie Ihre Standard Einstellunge vornehmen!")
    If Not FileExists($sAppDir) Then DirCreate($sAppDir)
    Global Const $sInifile = $sAppDir & 'Spielzeit-Timer.ini'
    Global $b7SegmentFont = _Segment7new()
    Global $t7SegmentFont = DllStructCreate('byte[' & BinaryLen($b7SegmentFont) & ']')
    DllStructSetData($t7SegmentFont, 1, $b7SegmentFont)
    Global $h7SegmentFont = _WinAPI_AddFontMemResourceEx(DllStructGetPtr($t7SegmentFont), DllStructGetSize($t7SegmentFont))
    Global $hUpBitmap = _GDIPlus_BitmapCreateFromMemory(_uppng())
    Global $hDownBitmap = _GDIPlus_BitmapCreateFromMemory(_downpng())
    Global $sSoundfile = @TempDir & '\glocke.mp3'
    If Not FileExists($sSoundfile) Then _glocke(True, @TempDir)
    Global $aSound = _SoundOpen($sSoundfile)
    Global Const $iAppDPI = RegRead('HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics', 'AppliedDPI')
    Global Const $iRed = 0, $iYellow = 60, $iGreen = 120, $iBlue = -150 ; Farbwerte/HUE gegenueber dem roten Standardwert (Werte von -180 bis +180 sind moeglich)
    Global Const $iWidth = 240, $iHeight = 360
    #EndRegion Konstanten deklarieren
    
    #Region globale Variablen
    Global $iTimerSeconds = IniRead($sInifile, 'Config', 'TimerSeconds', 600)
    If $iTimeCmdS <> 0 Then
        $iTimerSeconds = $iTimeCmdS
    EndIf
    Global $iTimerSecondsRes = $iTimerSeconds
    Global $iTimerStep = IniRead($sInifile, 'Config', 'TimerStep', 10) ; In der Inidatei kann man die Schrittweite (in Sekunden) fuer die Timereinstellung festlegen
    Global $iTimerDiv = IniRead($sInifile, 'Config', 'TimerDiv', 1) ; In der Inidatei kann man die Schrittweite (in Menuten) fuer die letzte Minute festelegen
    Global $iTimerPause = IniRead($sInifile, 'Config', 'TimerPause', 300) ; In der Inidatei kann man die Schrittweite (in Sekunden) fuer die Pause festlegen
    If $iPauseCmdS <> 0 Then
        $iTimerPause = $iPauseCmdS
    EndIf
    Global $iTimerPauseRes = $iTimerPause
    Global $bTimerOn = False, $iSeconds = $iTimerSeconds
    Global $bTimerOnPause = False, $iSecondsPause = $iTimerPause
    Global $sound1 = IniRead($sInifile, 'Sound', 'letzte-Minute', $sSoundfile)
    If Not FileExists($sound1) Then $sound1 = $sSoundfile
    Global $aSound1 = _SoundOpen($sound1)
    Global $sound2 = IniRead($sInifile, 'Sound', 'Spielende', $sSoundfile)
    If Not FileExists($sound2) Then $sound2 = $sSoundfile
    Global $aSound2 = _SoundOpen($sound2)
    Global $sound3 = IniRead($sInifile, 'Sound', 'Pause', $sSoundfile)
    If Not FileExists($sound3) Then $sound3 = $sSoundfile
    Global $aSound3 = _SoundOpen($sound3)
    Global $iRound = IniRead($sInifile, 'Config', 'Runden', 1) ; In der Inidatei kann man die Rounden Anzahl festlegen
    
    #EndRegion globale Variablen
    
    #Region löschen wenn nicht mehr benötigt
    global $iHalfT = 1
    #EndRegion löschen wenn nicht mehr benötigt
    
    #Region Fenster erstellen
    _Fenster()
    Func _Fenster()  ;Funktion Fenster
        if $iRound < 2 Then
            if $iHalfT = 1 Then
                _Fenster01()
                _Idle()
            Else
                _Fenster02()
                _Idle()
            EndIf
        Else
            if $iHalfT = 1 Then
                _FensterX1()
                _Idle()
            Else
                _FensterX2()
                _Idle()
            EndIf
        EndIf
    
    EndFunc   ;==>_Fenster
    
    Func _Fenster01() ;(keine Runden 1 Halbzeit)
        MsgBox(1, "Fenster 01", "")
        Global $hGui = GUICreate(StringFormat('%s  v%-3.3s', '01', $sAppTitle, $sAppVersion), $iWidth, $iHeight, -1, -1, -1)
        GUISetOnEvent($GUI_EVENT_CLOSE, _Minimize)
        GUISetOnEvent($GUI_EVENT_MINIMIZE, _Minimize)
        TraySetOnEvent(-7, "_Restore")
        GUISetBkColor(0x000000)
        GUISetIcon(@ScriptDir & '\stopwatch.ico', 0, $hGui)
    
        Global $Setting_Menu = GUICtrlCreateMenu("Menü")
        Global $Setting_Para = GUICtrlCreateMenuItem("Einstellungen", $Setting_Menu)
        GUICtrlSetOnEvent(-1, "_Settings")
        Global $Setting_exit = GUICtrlCreateMenuItem("Ende", $Setting_Menu)
        GUICtrlSetOnEvent(-1, "_Exit")
        Global $helpmenu = GUICtrlCreateMenu("?")
        Global $Info = GUICtrlCreateMenuItem("Version", $helpmenu)
        GUICtrlSetOnEvent(-1, "_showInfo")
    
        Global $idTime = GUICtrlCreateLabel(StringFormat('%02d:%02d', Int($iTimerSeconds / 60), Mod($iTimerSeconds, 60)), 20, 12, $iWidth - 60, 44, $SS_CENTER)
        GUICtrlSetColor(-1, 0x22FF22)
        GUICtrlSetFont(-1, 40 / $iAppDPI * 80, 400, 0, 'Segment7')
        Global $hGUi1 = GUICtrlCreateLabel("Spielzeit", 30, 80, 172, 33, $SS_CENTER)
        GUICtrlSetColor(-1, 0xFEFF22)
        GUICtrlSetFont(-1, 20)
    
        Global $idTime1 = GUICtrlCreateLabel(StringFormat('%02d:%02d', Int(($iTimerSeconds - $iTimerDiv * 60) / 60), Mod($iTimerSeconds, 60)), 20, 120, $iWidth - 60, 44, $SS_CENTER)
        GUICtrlSetColor(-1, 0x22FF22)
        GUICtrlSetFont(-1, 40 / $iAppDPI * 80, 400, 0, 'Segment7')
        Global $hGUi2 = GUICtrlCreateLabel("letzte Minute", 30, 158, 172, 33, $SS_CENTER)
        GUICtrlSetColor(-1, 0xFEFF22)
        GUICtrlSetFont(-1, 20)
    
        Global $idTime2 = GUICtrlCreateLabel(StringFormat('%02d:%02d', Int($iTimerPause / 60), Mod($iTimerPause, 60)), 20, 200, $iWidth - 60, 44, $SS_CENTER)
        GUICtrlSetColor(-1, 0x22FF22)
        GUICtrlSetFont(-1, 40 / $iAppDPI * 80, 400, 0, 'Segment7')
        Global $hGUi3 = GUICtrlCreateLabel("Pause", 30, 268, 172, 33, $SS_CENTER)
        GUICtrlSetColor(-1, 0xFEFF22)
        GUICtrlSetFont(-1, 20)
    
    
        Global $idUp = GUICtrlCreatePic('', $iWidth - 34, 6, 24, 24)
        GUICtrlSetOnEvent(-1, '_ChangeTimerSeconds')
        Global $hBMP = _GDIPlus_BitmapCreateDIBFromBitmap($hUpBitmap)
        _WinAPI_DeleteObject(GUICtrlSendMsg($idUp, $STM_SETIMAGE, $IMAGE_BITMAP, $hBMP))
        _WinAPI_DeleteObject($hBMP)
    
        Global $idDown = GUICtrlCreatePic('', $iWidth - 34, 34, 24, 24)
        GUICtrlSetOnEvent(-1, '_ChangeTimerSeconds')
        Global $hBMP = _GDIPlus_BitmapCreateDIBFromBitmap($hDownBitmap)
        _WinAPI_DeleteObject(GUICtrlSendMsg($idDown, $STM_SETIMAGE, $IMAGE_BITMAP, $hBMP))
        _WinAPI_DeleteObject($hBMP)
    
        Global $idUpP = GUICtrlCreatePic('', $iWidth - 34, 197, 24, 24)
        GUICtrlSetOnEvent(-1, '_ChangeTimerPauseSeconds')
        Global $hBMP = _GDIPlus_BitmapCreateDIBFromBitmap($hUpBitmap)
        _WinAPI_DeleteObject(GUICtrlSendMsg($idUpP, $STM_SETIMAGE, $IMAGE_BITMAP, $hBMP))
        _WinAPI_DeleteObject($hBMP)
    
        Global $idDownP = GUICtrlCreatePic('', $iWidth - 34, 225, 24, 24)
        GUICtrlSetOnEvent(-1, '_ChangeTimerPauseSeconds')
        Global $hBMP = _GDIPlus_BitmapCreateDIBFromBitmap($hDownBitmap)
        _WinAPI_DeleteObject(GUICtrlSendMsg($idDownP, $STM_SETIMAGE, $IMAGE_BITMAP, $hBMP))
        _WinAPI_DeleteObject($hBMP)
    
        Global $aProgress1 = _ProgressEx_Create(10, 60, $iWidth - 20, 15, $PE_NOTEXT)
        _ProgressEx_SetData($aProgress1, 100, $iGreen)
    
        Global $aProgress2 = _ProgressEx_Create(10, 250, $iWidth - 20, 15, $PE_NOTEXT)
        _ProgressEx_SetData($aProgress2, 100, -0)
    
        Global $idReset = GUICtrlCreateButton('Reset', 10, 310, 50, 25)
        GUICtrlSetFont(-1, 12 / $iAppDPI * 96, 600, 0, 'Tahoma')
        GUICtrlSetOnEvent(-1, '_ResetTimer')
    
        Global $idStop = GUICtrlCreateButton('Stop', 65, 310, 50, 25)
        GUICtrlSetFont(-1, 12 / $iAppDPI * 96, 600, 0, 'Tahoma')
        GUICtrlSetOnEvent(-1, '_StopTimer')
        GUICtrlSetState($idStop, $GUI_DISABLE)
    
        Global $idStart = GUICtrlCreateButton('Start', $iWidth - 120, 310, 110, 25, $BS_DEFPUSHBUTTON)
        GUICtrlSetFont(-1, 12 / $iAppDPI * 96, 600, 0, 'Tahoma')
        GUICtrlSetOnEvent(-1, '_StartTimer')
    EndFunc   ;==>_Fenster01
    
    Func _FensterX1() ;(mehrere Runden 1 Halbzeit)
        MsgBox(1, "Fenster X1", "")
        Global $hGui = GUICreate(StringFormat('%s  v%-3.3s', 'X1', $sAppTitle, $sAppVersion), $iWidth, $iHeight, -1, -1, -1)
        GUISetOnEvent($GUI_EVENT_CLOSE, _Minimize)
        GUISetOnEvent($GUI_EVENT_MINIMIZE, _Minimize)
        TraySetOnEvent(-7, "_Restore")
        GUISetBkColor(0x000000)
        GUISetIcon(@ScriptDir & '\stopwatch.ico', 0, $hGui)
    
        Global $Setting_Menu = GUICtrlCreateMenu("Menü")
        Global $Setting_Para = GUICtrlCreateMenuItem("Einstellungen", $Setting_Menu)
        GUICtrlSetOnEvent(-1, "_Settings")
        Global $Setting_exit = GUICtrlCreateMenuItem("Ende", $Setting_Menu)
        GUICtrlSetOnEvent(-1, "_Exit")
        Global $helpmenu = GUICtrlCreateMenu("?")
        Global $Info = GUICtrlCreateMenuItem("Version", $helpmenu)
        GUICtrlSetOnEvent(-1, "_showInfo")
    
        Global $idTime = GUICtrlCreateLabel(StringFormat('%02d:%02d', Int($iTimerSeconds / 60), Mod($iTimerSeconds, 60)), 20, 12, $iWidth - 60, 44, $SS_CENTER)
        GUICtrlSetColor(-1, 0x22FF22)
        GUICtrlSetFont(-1, 40 / $iAppDPI * 80, 400, 0, 'Segment7')
        Global $hGUi1 = GUICtrlCreateLabel("Spielzeit", 30, 80, 172, 33, $SS_CENTER)
        GUICtrlSetColor(-1, 0xFEFF22)
        GUICtrlSetFont(-1, 20)
    
        Global $idTime1 = GUICtrlCreateLabel(StringFormat('%02d:%02d', Int(($iTimerSeconds - $iTimerDiv * 60) / 60), Mod($iTimerSeconds, 60)), 20, 120, $iWidth - 60, 44, $SS_CENTER)
        GUICtrlSetColor(-1, 0x22FF22)
        GUICtrlSetFont(-1, 40 / $iAppDPI * 80, 400, 0, 'Segment7')
        Global $hGUi2 = GUICtrlCreateLabel("letzte Minute", 30, 158, 172, 33, $SS_CENTER)
        GUICtrlSetColor(-1, 0xFEFF22)
        GUICtrlSetFont(-1, 20)
    
        Global $idTime2 = GUICtrlCreateLabel(StringFormat('%02d:%02d', Int($iTimerPause / 60), Mod($iTimerPause, 60)), 20, 200, $iWidth - 60, 44, $SS_CENTER)
        GUICtrlSetColor(-1, 0x22FF22)
        GUICtrlSetFont(-1, 40 / $iAppDPI * 80, 400, 0, 'Segment7')
        Global $hGUi3 = GUICtrlCreateLabel("Pause", 30, 268, 172, 33, $SS_CENTER)
        GUICtrlSetColor(-1, 0xFEFF22)
        GUICtrlSetFont(-1, 20)
    
    
        Global $idUp = GUICtrlCreatePic('', $iWidth - 34, 6, 24, 24)
        GUICtrlSetOnEvent(-1, '_ChangeTimerSeconds')
        Global $hBMP = _GDIPlus_BitmapCreateDIBFromBitmap($hUpBitmap)
        _WinAPI_DeleteObject(GUICtrlSendMsg($idUp, $STM_SETIMAGE, $IMAGE_BITMAP, $hBMP))
        _WinAPI_DeleteObject($hBMP)
    
        Global $idDown = GUICtrlCreatePic('', $iWidth - 34, 34, 24, 24)
        GUICtrlSetOnEvent(-1, '_ChangeTimerSeconds')
        Global $hBMP = _GDIPlus_BitmapCreateDIBFromBitmap($hDownBitmap)
        _WinAPI_DeleteObject(GUICtrlSendMsg($idDown, $STM_SETIMAGE, $IMAGE_BITMAP, $hBMP))
        _WinAPI_DeleteObject($hBMP)
    
        Global $idUpP = GUICtrlCreatePic('', $iWidth - 34, 197, 24, 24)
        GUICtrlSetOnEvent(-1, '_ChangeTimerPauseSeconds')
        Global $hBMP = _GDIPlus_BitmapCreateDIBFromBitmap($hUpBitmap)
        _WinAPI_DeleteObject(GUICtrlSendMsg($idUpP, $STM_SETIMAGE, $IMAGE_BITMAP, $hBMP))
        _WinAPI_DeleteObject($hBMP)
    
        Global $idDownP = GUICtrlCreatePic('', $iWidth - 34, 225, 24, 24)
        GUICtrlSetOnEvent(-1, '_ChangeTimerPauseSeconds')
        Global $hBMP = _GDIPlus_BitmapCreateDIBFromBitmap($hDownBitmap)
        _WinAPI_DeleteObject(GUICtrlSendMsg($idDownP, $STM_SETIMAGE, $IMAGE_BITMAP, $hBMP))
        _WinAPI_DeleteObject($hBMP)
    
        Global $aProgress1 = _ProgressEx_Create(10, 60, $iWidth - 20, 15, $PE_NOTEXT)
        _ProgressEx_SetData($aProgress1, 100, $iGreen)
    
        Global $aProgress2 = _ProgressEx_Create(10, 250, $iWidth - 20, 15, $PE_NOTEXT)
        _ProgressEx_SetData($aProgress2, 100, -0)
    
        Global $idReset = GUICtrlCreateButton('Reset', 10, 310, 50, 25)
        GUICtrlSetFont(-1, 12 / $iAppDPI * 96, 600, 0, 'Tahoma')
        GUICtrlSetOnEvent(-1, '_ResetTimer')
    
        Global $idStop = GUICtrlCreateButton('Stop', 65, 310, 50, 25)
        GUICtrlSetFont(-1, 12 / $iAppDPI * 96, 600, 0, 'Tahoma')
        GUICtrlSetOnEvent(-1, '_StopTimer')
        GUICtrlSetState($idStop, $GUI_DISABLE)
    
        Global $idStart = GUICtrlCreateButton('Start', $iWidth - 120, 310, 110, 25, $BS_DEFPUSHBUTTON)
        GUICtrlSetFont(-1, 12 / $iAppDPI * 96, 600, 0, 'Tahoma')
        GUICtrlSetOnEvent(-1, '_StartTimer')
    EndFunc   ;==>_FensterX1
    
    Func _Fenster02() ;(keine Runden 2 Halbzeit)
        MsgBox(1, "Fenster 02", "")
        Global $hGui = GUICreate(StringFormat('%s  v%-3.3s', '02', $sAppTitle, $sAppVersion), $iWidth, $iHeight, -1, -1, -1)
        GUISetOnEvent($GUI_EVENT_CLOSE, _Minimize)
        GUISetOnEvent($GUI_EVENT_MINIMIZE, _Minimize)
        TraySetOnEvent(-7, "_Restore")
        GUISetBkColor(0x000000)
        GUISetIcon(@ScriptDir & '\stopwatch.ico', 0, $hGui)
    
        Global $Setting_Menu = GUICtrlCreateMenu("Menü")
        Global $Setting_Para = GUICtrlCreateMenuItem("Einstellungen", $Setting_Menu)
        GUICtrlSetOnEvent(-1, "_Settings")
        Global $Setting_exit = GUICtrlCreateMenuItem("Ende", $Setting_Menu)
        GUICtrlSetOnEvent(-1, "_Exit")
        Global $helpmenu = GUICtrlCreateMenu("?")
        Global $Info = GUICtrlCreateMenuItem("Version", $helpmenu)
        GUICtrlSetOnEvent(-1, "_showInfo")
    
        Global $idTime = GUICtrlCreateLabel(StringFormat('%02d:%02d', Int($iTimerSeconds / 60), Mod($iTimerSeconds, 60)), 20, 12, $iWidth - 60, 44, $SS_CENTER)
        GUICtrlSetColor(-1, 0x22FF22)
        GUICtrlSetFont(-1, 40 / $iAppDPI * 80, 400, 0, 'Segment7')
        Global $hGUi1 = GUICtrlCreateLabel("Spielzeit", 30, 80, 172, 33, $SS_CENTER)
        GUICtrlSetColor(-1, 0xFEFF22)
        GUICtrlSetFont(-1, 20)
    
        Global $idTime1 = GUICtrlCreateLabel(StringFormat('%02d:%02d', Int(($iTimerSeconds - $iTimerDiv * 60) / 60), Mod($iTimerSeconds, 60)), 20, 120, $iWidth - 60, 44, $SS_CENTER)
        GUICtrlSetColor(-1, 0x22FF22)
        GUICtrlSetFont(-1, 40 / $iAppDPI * 80, 400, 0, 'Segment7')
        Global $hGUi2 = GUICtrlCreateLabel("letzte Minute", 30, 158, 172, 33, $SS_CENTER)
        GUICtrlSetColor(-1, 0xFEFF22)
        GUICtrlSetFont(-1, 20)
    
        Global $idTime2 = GUICtrlCreateLabel(StringFormat('%02d:%02d', Int($iTimerPause / 60), Mod($iTimerPause, 60)), 20, 200, $iWidth - 60, 44, $SS_CENTER)
        GUICtrlSetColor(-1, 0x22FF22)
        GUICtrlSetFont(-1, 40 / $iAppDPI * 80, 400, 0, 'Segment7')
        Global $hGUi3 = GUICtrlCreateLabel("Pause", 30, 268, 172, 33, $SS_CENTER)
        GUICtrlSetColor(-1, 0xFEFF22)
        GUICtrlSetFont(-1, 20)
    
    
        Global $idUp = GUICtrlCreatePic('', $iWidth - 34, 6, 24, 24)
        GUICtrlSetOnEvent(-1, '_ChangeTimerSeconds')
        Global $hBMP = _GDIPlus_BitmapCreateDIBFromBitmap($hUpBitmap)
        _WinAPI_DeleteObject(GUICtrlSendMsg($idUp, $STM_SETIMAGE, $IMAGE_BITMAP, $hBMP))
        _WinAPI_DeleteObject($hBMP)
    
        Global $idDown = GUICtrlCreatePic('', $iWidth - 34, 34, 24, 24)
        GUICtrlSetOnEvent(-1, '_ChangeTimerSeconds')
        Global $hBMP = _GDIPlus_BitmapCreateDIBFromBitmap($hDownBitmap)
        _WinAPI_DeleteObject(GUICtrlSendMsg($idDown, $STM_SETIMAGE, $IMAGE_BITMAP, $hBMP))
        _WinAPI_DeleteObject($hBMP)
    
        Global $idUpP = GUICtrlCreatePic('', $iWidth - 34, 197, 24, 24)
        GUICtrlSetOnEvent(-1, '_ChangeTimerPauseSeconds')
        Global $hBMP = _GDIPlus_BitmapCreateDIBFromBitmap($hUpBitmap)
        _WinAPI_DeleteObject(GUICtrlSendMsg($idUpP, $STM_SETIMAGE, $IMAGE_BITMAP, $hBMP))
        _WinAPI_DeleteObject($hBMP)
    
        Global $idDownP = GUICtrlCreatePic('', $iWidth - 34, 225, 24, 24)
        GUICtrlSetOnEvent(-1, '_ChangeTimerPauseSeconds')
        Global $hBMP = _GDIPlus_BitmapCreateDIBFromBitmap($hDownBitmap)
        _WinAPI_DeleteObject(GUICtrlSendMsg($idDownP, $STM_SETIMAGE, $IMAGE_BITMAP, $hBMP))
        _WinAPI_DeleteObject($hBMP)
    
        Global $aProgress1 = _ProgressEx_Create(10, 60, $iWidth - 20, 15, $PE_NOTEXT)
        _ProgressEx_SetData($aProgress1, 100, $iGreen)
    
        Global $aProgress2 = _ProgressEx_Create(10, 250, $iWidth - 20, 15, $PE_NOTEXT)
        _ProgressEx_SetData($aProgress2, 100, -0)
    
        Global $idReset = GUICtrlCreateButton('Reset', 10, 310, 50, 25)
        GUICtrlSetFont(-1, 12 / $iAppDPI * 96, 600, 0, 'Tahoma')
        GUICtrlSetOnEvent(-1, '_ResetTimer')
    
        Global $idStop = GUICtrlCreateButton('Stop', 65, 310, 50, 25)
        GUICtrlSetFont(-1, 12 / $iAppDPI * 96, 600, 0, 'Tahoma')
        GUICtrlSetOnEvent(-1, '_StopTimer')
        GUICtrlSetState($idStop, $GUI_DISABLE)
    
        Global $idStart = GUICtrlCreateButton('Start', $iWidth - 120, 310, 110, 25, $BS_DEFPUSHBUTTON)
        GUICtrlSetFont(-1, 12 / $iAppDPI * 96, 600, 0, 'Tahoma')
        GUICtrlSetOnEvent(-1, '_StartTimer')
    EndFunc   ;==>_Fenster02
    
    Func _FensterX2() ;(mehrere Runden 2 Halbzeit)
        MsgBox(1, "Fenster X2", "")
        Global $hGui = GUICreate(StringFormat('%s  v%-3.3s', 'X2', $sAppTitle, $sAppVersion), $iWidth, $iHeight, -1, -1, -1)
        GUISetOnEvent($GUI_EVENT_CLOSE, _Minimize)
        GUISetOnEvent($GUI_EVENT_MINIMIZE, _Minimize)
        TraySetOnEvent(-7, "_Restore")
        GUISetBkColor(0x000000)
        GUISetIcon(@ScriptDir & '\stopwatch.ico', 0, $hGui)
    
        Global $Setting_Menu = GUICtrlCreateMenu("Menü")
        Global $Setting_Para = GUICtrlCreateMenuItem("Einstellungen", $Setting_Menu)
        GUICtrlSetOnEvent(-1, "_Settings")
        Global $Setting_exit = GUICtrlCreateMenuItem("Ende", $Setting_Menu)
        GUICtrlSetOnEvent(-1, "_Exit")
        Global $helpmenu = GUICtrlCreateMenu("?")
        Global $Info = GUICtrlCreateMenuItem("Version", $helpmenu)
        GUICtrlSetOnEvent(-1, "_showInfo")
    
        Global $idTime = GUICtrlCreateLabel(StringFormat('%02d:%02d', Int($iTimerSeconds / 60), Mod($iTimerSeconds, 60)), 20, 12, $iWidth - 60, 44, $SS_CENTER)
        GUICtrlSetColor(-1, 0x22FF22)
        GUICtrlSetFont(-1, 40 / $iAppDPI * 80, 400, 0, 'Segment7')
        Global $hGUi1 = GUICtrlCreateLabel("Spielzeit", 30, 80, 172, 33, $SS_CENTER)
        GUICtrlSetColor(-1, 0xFEFF22)
        GUICtrlSetFont(-1, 20)
    
        Global $idTime1 = GUICtrlCreateLabel(StringFormat('%02d:%02d', Int(($iTimerSeconds - $iTimerDiv * 60) / 60), Mod($iTimerSeconds, 60)), 20, 120, $iWidth - 60, 44, $SS_CENTER)
        GUICtrlSetColor(-1, 0x22FF22)
        GUICtrlSetFont(-1, 40 / $iAppDPI * 80, 400, 0, 'Segment7')
        Global $hGUi2 = GUICtrlCreateLabel("letzte Minute", 30, 158, 172, 33, $SS_CENTER)
        GUICtrlSetColor(-1, 0xFEFF22)
        GUICtrlSetFont(-1, 20)
    
        Global $idTime2 = GUICtrlCreateLabel(StringFormat('%02d:%02d', Int($iTimerPause / 60), Mod($iTimerPause, 60)), 20, 200, $iWidth - 60, 44, $SS_CENTER)
        GUICtrlSetColor(-1, 0x22FF22)
        GUICtrlSetFont(-1, 40 / $iAppDPI * 80, 400, 0, 'Segment7')
        Global $hGUi3 = GUICtrlCreateLabel("Pause", 30, 268, 172, 33, $SS_CENTER)
        GUICtrlSetColor(-1, 0xFEFF22)
        GUICtrlSetFont(-1, 20)
    
    
        Global $idUp = GUICtrlCreatePic('', $iWidth - 34, 6, 24, 24)
        GUICtrlSetOnEvent(-1, '_ChangeTimerSeconds')
        Global $hBMP = _GDIPlus_BitmapCreateDIBFromBitmap($hUpBitmap)
        _WinAPI_DeleteObject(GUICtrlSendMsg($idUp, $STM_SETIMAGE, $IMAGE_BITMAP, $hBMP))
        _WinAPI_DeleteObject($hBMP)
    
        Global $idDown = GUICtrlCreatePic('', $iWidth - 34, 34, 24, 24)
        GUICtrlSetOnEvent(-1, '_ChangeTimerSeconds')
        Global $hBMP = _GDIPlus_BitmapCreateDIBFromBitmap($hDownBitmap)
        _WinAPI_DeleteObject(GUICtrlSendMsg($idDown, $STM_SETIMAGE, $IMAGE_BITMAP, $hBMP))
        _WinAPI_DeleteObject($hBMP)
    
        Global $idUpP = GUICtrlCreatePic('', $iWidth - 34, 197, 24, 24)
        GUICtrlSetOnEvent(-1, '_ChangeTimerPauseSeconds')
        Global $hBMP = _GDIPlus_BitmapCreateDIBFromBitmap($hUpBitmap)
        _WinAPI_DeleteObject(GUICtrlSendMsg($idUpP, $STM_SETIMAGE, $IMAGE_BITMAP, $hBMP))
        _WinAPI_DeleteObject($hBMP)
    
        Global $idDownP = GUICtrlCreatePic('', $iWidth - 34, 225, 24, 24)
        GUICtrlSetOnEvent(-1, '_ChangeTimerPauseSeconds')
        Global $hBMP = _GDIPlus_BitmapCreateDIBFromBitmap($hDownBitmap)
        _WinAPI_DeleteObject(GUICtrlSendMsg($idDownP, $STM_SETIMAGE, $IMAGE_BITMAP, $hBMP))
        _WinAPI_DeleteObject($hBMP)
    
        Global $aProgress1 = _ProgressEx_Create(10, 60, $iWidth - 20, 15, $PE_NOTEXT)
        _ProgressEx_SetData($aProgress1, 100, $iGreen)
    
        Global $aProgress2 = _ProgressEx_Create(10, 250, $iWidth - 20, 15, $PE_NOTEXT)
        _ProgressEx_SetData($aProgress2, 100, -0)
    
        Global $idReset = GUICtrlCreateButton('Reset', 10, 310, 50, 25)
        GUICtrlSetFont(-1, 12 / $iAppDPI * 96, 600, 0, 'Tahoma')
        GUICtrlSetOnEvent(-1, '_ResetTimer')
    
        Global $idStop = GUICtrlCreateButton('Stop', 65, 310, 50, 25)
        GUICtrlSetFont(-1, 12 / $iAppDPI * 96, 600, 0, 'Tahoma')
        GUICtrlSetOnEvent(-1, '_StopTimer')
        GUICtrlSetState($idStop, $GUI_DISABLE)
    
        Global $idStart = GUICtrlCreateButton('Start', $iWidth - 120, 310, 110, 25, $BS_DEFPUSHBUTTON)
        GUICtrlSetFont(-1, 12 / $iAppDPI * 96, 600, 0, 'Tahoma')
        GUICtrlSetOnEvent(-1, '_StartTimer')
    EndFunc   ;==>_FensterX2
    
    #EndRegion Fenster erstellen
    
    #Region Fenster anzeigen und auf das Schliessen warten (der Rest ist funktionsgesteuert)
    Func _Idle()
        Global $aAccelKeys[2][2] = [['{UP}', $idUp], ['{DOWN}', $idDown]]
        GUISetAccelerators($aAccelKeys)
        GUISetState(@SW_SHOW)
        _Timer_SetTimer($hGui, 1000, '_ChangeTimer')
        _Timer_SetTimer($hGui, 1000, '_ChangeTimerPause')
        WinWaitClose($hGui)
        Exit
    EndFunc   ;==>_Idle
    #EndRegion Fenster anzeigen und auf das Schliessen warten (der Rest ist funktionsgesteuert)
    
    #Region Funktionen
    Func _CloseMainGui()
        _Timer_KillAllTimers($hGui)
        _WinAPI_RemoveFontMemResourceEx($h7SegmentFont)
        $t7SegmentFont = 0
        _GDIPlus_BitmapDispose($hUpBitmap)
        _GDIPlus_BitmapDispose($hDownBitmap)
        _GDIPlus_Shutdown()
        _SoundClose($aSound)
        _SoundClose($aSound1)
        _SoundClose($aSound2)
        _SoundClose($aSound3)
        GUIDelete($hGui)
    EndFunc   ;==>_CloseMainGui
    
    Func _ChangeTimer($hWnd, $iMsg, $iIDTimer, $iTime, $idTime1, $idTime2, $iSeconds)
        If Not $bTimerOn Then Return
        $iSeconds -= 1
        GUICtrlSetData($idTime, StringFormat('%02d:%02d', Int($iSeconds / 60), Mod($iSeconds, 60)))
    
        If(($iSeconds - $iTimerDiv * 60) / 60) > 0 Then
            GUICtrlSetData($idTime1, StringFormat('%02d:%02d', Int(($iSeconds - $iTimerDiv * 60) / 60), Mod($iSeconds, 60)))
        Else
            GUICtrlSetData($idTime1, '00:00')
        EndIf
    
        _ProgressEx_SetData($aProgress1, 100 / $iTimerSeconds * $iSeconds, $iGreen)
    
        If(($iSeconds - $iTimerDiv * 60) / 60) = 0 Then
            _SoundPlay($aSound1)
        EndIf
        If $iSeconds = 0 Then
            $bTimerOn = False
            _SoundPlay($aSound2)
            $bTimerOnPause = True
        EndIf
    EndFunc   ;==>_ChangeTimer
    
    Func _ChangeTimerPause($hWnd, $iMsg, $iIDTimer, $idTime1, $idTime2, $iSecondsPause)
        If Not $bTimerOnPause Then Return
        $iSecondsPause -= 1
        GUICtrlSetData($idTime2, StringFormat('%02d:%02d', Int($iSecondsPause / 60), Mod($iSecondsPause, 60)))
        
        _ProgressEx_SetData($aProgress2, 100 / $iTimerPause * $iSecondsPause, -0)
    
        If $iSecondsPause = 0 Then
            $bTimerOnPause = False
            _SoundPlay($aSound3)
            _StopTimer()
            GUICtrlSetState($idStart, $GUI_DISABLE)
        EndIf
    EndFunc   ;==>_ChangeTimerPause
    
    Func _ChangeTimerSeconds()
        If $bTimerOn Then Return
        $iTimerSeconds += (@GUI_CtrlId = $idUp ? 1 : -1) * $iTimerStep
        If $iTimerSeconds < $iTimerStep Then $iTimerSeconds = 6000 - $iTimerStep
        If $iTimerSeconds > 6000 - $iTimerStep Then $iTimerSeconds = $iTimerStep
        $iSeconds = $iTimerSeconds
        GUICtrlSetData($idTime, StringFormat('%02d:%02d', Int($iSeconds / 60), Mod($iSeconds, 60)))
        GUICtrlSetData($idTime1, StringFormat('%02d:%02d', Int(($iSeconds - $iTimerDiv * 60) / 60), Mod($iSeconds, 60)))
    EndFunc   ;==>_ChangeTimerSeconds
    
    Func _ChangeTimerPauseSeconds()
        If $bTimerOnPause Then Return
        $iTimerPause += (@GUI_CtrlId = $idUpP ? 1 : -1) * $iTimerStep
        If $iTimerPause < $iTimerStep Then $iTimerPause = 6000 - $iTimerStep
        If $iTimerPause > 6000 - $iTimerStep Then $iTimerPause = $iTimerStep
        $iSecondsPause = $iTimerPause
        GUICtrlSetData($idTime2, StringFormat('%02d:%02d', Int($iSecondsPause / 60), Mod($iSecondsPause, 60)))
    EndFunc   ;==>_ChangeTimerPauseSeconds
    
    Func _ResetTimer()
        
        GUICtrlSetData($idTime, StringFormat('%02d:%02d', Int($iTimerSecondsRes / 60), Mod($iTimerSecondsRes, 60)))
        GUICtrlSetData($idTime1, StringFormat('%02d:%02d', Int(($iTimerSecondsRes - $iTimerDiv * 60) / 60), Mod($iTimerSecondsRes, 60)))
        GUICtrlSetData($idTime2, StringFormat('%02d:%02d', Int($iTimerPauseRes / 60), Mod($iTimerPauseRes, 60)))
    
        Global $iTimerSecond = $iTimerSecondsRes
        Global $iSeconds = $iTimerSecondsRes
        Global $iTimerPause = $iTimerPauseRes
        Global $iSecondsPause = $iTimerPauseRes
    
        $bTimerOn = False
        $bTimerOnPause = False
    
        GUICtrlSetState($idStart, $GUI_ENABLE)
        GUICtrlSetState($idStop, $GUI_DISABLE)
    
        _ProgressEx_SetData($aProgress1, 100, $iGreen)
        _ProgressEx_SetData($aProgress2, 100, 0)
    
    EndFunc   ;==>_ResetTimer
    
    Func _StopTimer()
        $bTimerOn = False
        $bTimerOnPause = False
        GUICtrlSetState($idStart, $GUI_ENABLE)
        GUICtrlSetState($idStop, $GUI_DISABLE)
        GUICtrlSetState($idReset, $GUI_ENABLE)
        GUICtrlSetState($Setting_Para, $GUI_ENABLE)
    
    EndFunc   ;==>_StopTimer
    
    Func _StartTimer()
        if $iSeconds = 0 Then
            $bTimerOnPause = True
        Else
            $bTimerOn = True
        EndIf
        GUICtrlSetState($idStart, $GUI_DISABLE)
        GUICtrlSetState($idReset, $GUI_DISABLE)
        GUICtrlSetState($Setting_Para, $GUI_DISABLE)
        GUICtrlSetState($idStop, $GUI_ENABLE)
    EndFunc   ;==>_StartTimer
    
    #EndRegion Funktionen
    
    #Region Setting Menue
    Func _settings()
        GUISetState(@SW_HIDE, $hGui)
    
        Global $sound1 = IniRead($sInifile, 'Sound', 'Spielanfang', "")
        Global $sound2 = IniRead($sInifile, 'Sound', 'Spielende', "")
        Global $sound3 = IniRead($sInifile, 'Sound', 'Pause', "")
        Global $idround = IniRead($sInifile, 'Config', 'Runden', "1")
        Global $idTime1E = IniRead($sInifile, 'Config', 'TimerSeconds', "600")
        Global $idTime2E = IniRead($sInifile, 'Config', 'TimerPause', "300") ; In der Inidatei kann man die Schrittweite (in Sekunden) fuer die Pausenzeit festlegen
        Global $idTime3E = IniRead($sInifile, 'Config', 'TimerStep', "10") ; In der Inidatei kann man die Schrittweite (in Sekunden) fuer die Timereinstellung festlegen
        
        Global $SettingGui = GUICreate(StringFormat('%s  v%-3.3s', "Einstellungen", $sAppVersion), 450, 360, -1, -1, -1)
        ;==>_Sound 1
        Global $Label1 = GUICtrlCreateLabel("Sound-letzte-Minute", 8, 15, 150)
        GUICtrlSetFont(-1, 10, 800, 0, "Tahoma")
        Global $Liste1speichern = GUICtrlCreateInput($sound1, 8, 40, 350, 21)
        Global $Datein1 = GUICtrlCreateButton("...", 370, 40, 25, 21)
        GUICtrlSetOnEvent(-1, "_settings_d1")
    
        ;==>_Sound 2
        Global $Label2 = GUICtrlCreateLabel("Sound-Spielende", 8, 70, 150)
        GUICtrlSetFont(-1, 10, 800, 0, "Tahoma")
        Global $Liste2speichern = GUICtrlCreateInput($sound2, 8, 95, 350, 21)
        Global $Datein2 = GUICtrlCreateButton("...", 370, 95, 25, 21)
        GUICtrlSetOnEvent(-1, "_settings_d2")
    
        ;==>_Sound 3
        Global $Label3 = GUICtrlCreateLabel("Sound-Pausen-Ende", 8, 125, 150)
        GUICtrlSetFont(-1, 10, 800, 0, "Tahoma")
        Global $Liste3speichern = GUICtrlCreateInput($sound3, 8, 150, 350, 21)
        Global $Datein3 = GUICtrlCreateButton("...", 370, 150, 25, 21)
        GUICtrlSetOnEvent(-1, "_settings_d3")
    
        ;==>_Spielzeit (Voreinstellung)
        Global $Label4 = GUICtrlCreateLabel("Spielzeit", 8, 180, 150)
        GUICtrlSetFont(-1, 10, 800, 0, "Tahoma")
        Global $Liste4speichern = GUICtrlCreateInput($idTime1E, 8, 205, 53, 21, BitOR($ES_CENTER, $ES_NUMBER), $WS_EX_CLIENTEDGE)
        GUICtrlCreateLabel("in Sekunden", 86, 205, 100, 15, -1, -1)
        GUICtrlSetFont(-1, 10, 800, 0, "Tahoma")
        
        ;==>_Rundenanzahl (Voreinstellung)
        Global $Label41 = GUICtrlCreateLabel("Rundenanzahl", 233, 180, 150)
        GUICtrlSetFont(-1, 10, 800, 0, "Tahoma")
        Global $Liste41speichern = GUICtrlCreateInput($idround, 233, 205, 53, 21, BitOR($ES_CENTER, $ES_NUMBER), $WS_EX_CLIENTEDGE)
        GUICtrlCreateLabel("Anzahl", 311, 205, 100, 15, -1, -1)
        GUICtrlSetFont(-1, 10, 800, 0, "Tahoma")
        
        ;==>_Pausenzeit (Voreinstellung)
        Global $Label5 = GUICtrlCreateLabel("Pausenzeit", 8, 230, 150)
        GUICtrlSetFont(-1, 10, 800, 0, "Tahoma")
        Global $Liste5speichern = GUICtrlCreateInput($idTime2E, 8, 255, 53, 21, BitOR($ES_CENTER, $ES_NUMBER), $WS_EX_CLIENTEDGE)
        GUICtrlCreateLabel("in Sekunden", 86, 255, 100, 15, -1, -1)
        GUICtrlSetFont(-1, 10, 800, 0, "Tahoma")
        
        ;==>Verstellung (Voreinstellung)
        Global $Label6 = GUICtrlCreateLabel("Verstellung", 8, 280, 150)
        GUICtrlSetFont(-1, 10, 800, 0, "Tahoma")
        Global $Liste6speichern = GUICtrlCreateInput($idTime3E, 8, 305, 53, 21, BitOR($ES_CENTER, $ES_NUMBER), $WS_EX_CLIENTEDGE)
        GUICtrlCreateLabel("in Sekunden", 86, 305, 100, 15, -1, -1)
        GUICtrlSetFont(-1, 10, 800, 0, "Tahoma")
        
        ;==>_Speichern/Abbrechen
        Global $Speichern1 = GUICtrlCreateButton("Speichern", 250, 310, 65, 25)
        GUICtrlSetOnEvent(-1, "_settings_save")
        Global $Abbrechen = GUICtrlCreateButton("Abbrechen", 330, 310, 65, 25)
        GUICtrlSetOnEvent(-1, "_settings_end")
        GUISetState(@SW_SHOW)
        GUISetOnEvent($GUI_EVENT_CLOSE, '_settings_end')
    
    EndFunc   ;==>_settings
    
    Func _settings_d1()
        Global $Datei_d1 = FileOpenDialog("Bitte Sound Wählen", "c:\", "Sound (*.mp3)", 1 + 2) ;=>Datei auswählen
        GUICtrlSetData($Liste1speichern, $Datei_d1) ;=> Datei Anzeigen
    EndFunc   ;==>_settings_d1
    
    Func _settings_d2()
        Global $Datei_d2 = FileOpenDialog("Bitte Sound Wählen", "c:\", "Sound (*.mp3)", 1 + 2) ;=>Datei auswählen
        GUICtrlSetData($Liste2speichern, $Datei_d2) ;=> Datei Anzeigen
    EndFunc   ;==>_settings_d2
    
    Func _settings_d3()
        Global $Datei_d3 = FileOpenDialog("Bitte Sound Wählen", "c:\", "Sound (*.mp3)", 1 + 2) ;=>Datei auswählen
        GUICtrlSetData($Liste3speichern, $Datei_d3) ;=> Datei Anzeigen
    EndFunc   ;==>_settings_d3
    
    Func _settings_end()
        GUIDelete($SettingGui)
        GUISetState(@SW_SHOW, $hGui)
    EndFunc   ;==>_settings_end
    
    Func _settings_save()
        Local $L1sp = GUICtrlRead($Liste1speichern, 1)
        If $L1sp = "" Then
        Else
            IniWrite($sInifile, 'Sound', 'letzte-Minute', GUICtrlRead($Liste1speichern))
        EndIf
        
        Local $L2sp = GUICtrlRead($Liste2speichern, 1)
        If $L2sp = "" Then
        Else
            IniWrite($sInifile, 'Sound', 'Spielende', GUICtrlRead($Liste2speichern))
        EndIf
    
        Local $L3sp = GUICtrlRead($Liste3speichern, 1)
        If $L3sp = "" Then
        Else
            IniWrite($sInifile, 'Sound', 'Pause', GUICtrlRead($Liste3speichern))
        EndIf
    
        Local $L4sp = GUICtrlRead($Liste4speichern, 1)
        If $L4sp = "" Then
        ElseIf $L4sp = 0 Then
        Else
            IniWrite($sInifile, 'Config', 'TimerSeconds', GUICtrlRead($Liste4speichern))
        EndIf
    
        Local $L41sp = GUICtrlRead($Liste41speichern, 1)
        If $L41sp = "" Then
        ElseIf $L41sp = 0 Then
        Else
            IniWrite($sInifile, 'Config', 'Runden', GUICtrlRead($Liste41speichern))
        EndIf
        
        Local $L5sp = GUICtrlRead($Liste5speichern, 1)
        If $L5sp = "" Then
        ElseIf $L5sp = 0 Then
        Else
            IniWrite($sInifile, 'Config', 'TimerPause', GUICtrlRead($Liste5speichern))
        EndIf
    
        Local $L6sp = GUICtrlRead($Liste5speichern, 1)
        If $L6sp = "" Then
        ElseIf $L6sp = 0 Then
        Else
            IniWrite($sInifile, 'Config', 'TimerStep', GUICtrlRead($Liste6speichern))
        EndIf
    
        Global $sound1 = IniRead($sInifile, 'Sound', 'letzte-Minute', "")
        Global $sound2 = IniRead($sInifile, 'Sound', 'Spielende', "")
        Global $sound3 = IniRead($sInifile, 'Sound', 'Pause', "")
        Global $iRound = IniRead($sInifile, 'Config', 'Runden', "")
        Global $iTimerSeconds = IniRead($sInifile, 'Config', 'TimerSeconds', "")
        Global $iTimerSecondsRes = $iTimerSeconds
        Global $iTimerPause = IniRead($sInifile, 'Config', 'TimerPause', "")
        Global $iTimerPauseRes = $iTimerPause
        Global $iTimerStep = IniRead($sInifile, 'Config', 'TimerStep', "")
        
        GUIDelete($hGui)
        GUIDelete($SettingGui)
        _Fenster()
        
        
        _ResetTimer()
    EndFunc   ;==>_settings_save
    #EndRegion Setting Menue
    
    #Region Menue
    Func _Showinfo()
        MsgBox(0, "Info", "Version " & $sAppVersion & @CRLF & $sAppDate & @CRLF & $sAppAuthor)
    EndFunc   ;==>_Showinfo
    
    Func _Exit()
        _CloseMainGui()
    EndFunc   ;==>_Exit
    
    Func _Minimize()
        TraySetState(4)
        GUISetState(@SW_HIDE)
    EndFunc   ;==>_Minimize
    
    Func _Restore()
        TraySetState(8)
        GUISetState(@SW_SHOW)
    EndFunc   ;==>_Restore
    #EndRegion Menue
    Alles anzeigen
  • CmdLine Abfrage Werte Prüfen

    • sccssf
    • 10. März 2019 um 12:03
    Zitat von Musashi

    Für Testläufe von Skripten mit Parametern kannst Du Dir auch mal folgenden Link anschauen :

    Tipp zum Setzen von Übergabeparametern ($CMDLINE) im SciTE-Editor

    Danke für den Tip in SciTE nutze ISN Studio und dort geht es sogar noch etwas komfortabler.

  • CmdLine Abfrage Werte Prüfen

    • sccssf
    • 6. März 2019 um 21:58

    Dank für die Infos Musashi

    Werde ich mal alles probieren.

  • CmdLine Abfrage Werte Prüfen

    • sccssf
    • 5. März 2019 um 16:46

    alpines angepasst ;)

    Code
    #Region Startparameter
    ;==> Übergabe der Start Parameter
    ;==> Parameter 1 Spielzeit "/t"
    ;==> Parameter 2 Pausenzeit "/p"
    Local $iTimeCmd, $iPauseCmd
    If $CMDLINE[0] Then
        For $i = 1 To $CMDLINE[0]
            Switch $CMDLINE[$i]
                Case  '/?'
                    MsgBox(0x40000, @ScriptName & ' Hilfe', _
                            'Steuerbefehle zum Übertragen der Zeiten per Kommandoaufruf (cmd):' & @CRLF _
                             & @CRLF & '/t <Spielzeit in Sekunden>' _
                             & @CRLF & @TAB  _
                             & @CRLF & '/p <Pausenzeit in Sekunden>' )
                    Exit
                Case  '/t'
                    If $CMDLINE[0] > $i Then
                        $i += 1
                        $iTimeCmd = Number (StringRegExpReplace($CmdLine[$i], '(\d+)', '\1'))
                            If $iTimeCmd <>  0 Then
                                MsgBox(64, "TEST", $iTimecmd)
                            EndIf
                    EndIf
                    
                Case  '/p'
                    If $CMDLINE[0] > $i Then
                        $i += 1
                        $iPauseCmd = Number (StringRegExpReplace($CmdLine[$i], '(\d+)', '\1'))
                            If $iPauseCmd <>  0 Then
                                MsgBox(64, "TEST", $iPausecmd)
                            EndIf
                    EndIf
    ;~           Case '/x'
    ;~           Case '/x'
    ;~           Case '/x'
                Case Else
                    MsgBox(0x40000, 'Ungültige Option', _
                            'Command used:' & @CRLF & $CMDLINERAW & @CRLF & _
                            @CRLF & 'Benutzen Sie /? für mehr Informationen.')
                    Exit
            EndSwitch
        Next
    EndIf
    #EndRegion Startparameter
    Alles anzeigen
  • CmdLine Abfrage Werte Prüfen

    • sccssf
    • 5. März 2019 um 16:23

    Habe es jetzt so umgesetzt.
    Statt den MsgBox passiert später natürlich was anderes.

    Code
    #Region Startparameter
    ;==> Übergabe der Start Parameter
    ;==> Parameter 1 Spielzeit "/t"
    ;==> Parameter 2 Pausenzeit "/p"
    Local $iTimeCmd, $iPauseCmd
    If $CMDLINE[0] Then
        For $i = 1 To $CMDLINE[0]
            Select
                Case $CMDLINE[$i] = '/?'
                    MsgBox(0x40000, @ScriptName & ' Hilfe', _
                            'Steuerbefehle zum Übertragen der Zeiten per Kommandoaufruf (cmd):' & @CRLF _
                             & @CRLF & '/t <Spielzeit in Sekunden>' _
                             & @CRLF & @TAB  _
                             & @CRLF & '/p <Pausenzeit in Sekunden>' )
                    Exit
                Case $CMDLINE[$i] = '/t'
                    If $CMDLINE[0] > $i Then
                        $i += 1
                        $iTimeCmd = Number (StringRegExpReplace($CmdLine[$i], '(\d+)', '\1'))
                            If $iTimeCmd <>  0 Then
                                MsgBox(64, "TEST", $iTimecmd)
                            EndIf
                    EndIf
                    
                Case $CMDLINE[$i] = '/p'
                    If $CMDLINE[0] > $i Then
                        $i += 1
                        $iPauseCmd = Number (StringRegExpReplace($CmdLine[$i], '(\d+)', '\1'))
                            If $iPauseCmd <>  0 Then
                                MsgBox(64, "TEST", $iPausecmd)
                            EndIf
                    EndIf
    ;~             Case $CMDLINE[$i] = '/x'
    ;~             Case $CMDLINE[$i] = '/x'
    ;~             Case $CMDLINE[$i] = '/x'
                Case Else
                    MsgBox(0x40000, 'Ungültige Option', _
                            'Command used:' & @CRLF & $CMDLINERAW & @CRLF & _
                            @CRLF & 'Benutzen Sie /? für mehr Informationen.')
                    Exit
            EndSelect
        Next
    EndIf
    #EndRegion Startparameter
    Alles anzeigen
  • CmdLine Abfrage Werte Prüfen

    • sccssf
    • 5. März 2019 um 07:59

    alpines Danke für diesen Tipp, bekomme ich so umgesetzt.

    Zitat von alpines

    Der Ansatz ist ja schon mal nicht schlecht, aber du solltest bei den Zugriffen auf die entsprechenden Indizes mehr aufpassen, da du vorgreifst obwohl das Feld leer sein könnte.

    Du solltest also vor dem Zugriff prüfen ob UBound($CMDLine) > $i + 2 bzw. ob $CMDLine[0] > $i ist.

    Bitnugger hätte ich dies gestern gekannt hätte ich mir viel Denkschmalz erspart. Wobei das macht ja gerade auch Spaß.
    Ich nutzte ISN AutoIt Studio und da geht es ja auch.
    Wobei mein vollständiger Code auch schon noch mehr Teile enthält der Standard-Lösung.

    Spoiler anzeigen
    Code
    #Region Startparameter
    ;==> Übergabe der Start Parameter
    ;==> Parameter 1 Spielzeit "/t"
    ;==> Parameter 2 Pausenzeit "/p"
    If $CmdLine[1] = "?" Then _helpcmd()
    If $CmdLine[1] = "/?" Then _helpcmd()
        
    IF $CmdLine[0]>=2 then
        For $i = 1 To $CmdLine[0] Step 1
            If $CmdLine[$i] = "/t" Then 
                Global $iTimeCmd = Number($CmdLine[$i+1])
                If $iTimeCmd <>  0 Then 
                    If IsInt($iTimeCmd) Then
                        MsgBox(64, "TEST", $iTimecmd)
                    EndIf 
                EndIf 
            EndIf 
            IF $CmdLine[$i] = "/p" Then 
                Global $iPauseCmd = Number($CmdLine[$i+1])
                If $iPauseCmd <>  0 Then 
                    If IsInt($iPauseCmd) Then
                        MsgBox(64, "TEST", $iPausecmd)
                    EndIf 
                EndIf 
            EndIF
        Next
    EndIf
    #EndRegion startparameter
    
    Func _helpcmd()
        MsgBox(0, "Start Parameter", "/t = Spielzeit /p = Pausenzeit")
    EndFunc  ;==>help
    Alles anzeigen
  • CmdLine Abfrage Werte Prüfen

    • sccssf
    • 4. März 2019 um 19:33

    Hallo,

    will den CMDLine abfragen.
    Nun habe ich folgendes Problem

    Wenn ich das Programm Starte mit "Time.exe /t 20 /p 30" ist alles OK.

    Falls ich aber nicht alle Felder ausfülle.

    z.B. "Time.exe /t 20 /p " fliegt mir mein Skript um die Ohren.

    MsgBox ist natürlich erstmal nur damit ich sehe was passiert.

    Code
    IF $CmdLine[0]>=2 then
        For $i = 1 To $CmdLine[0] Step 1
            If $CmdLine[$i] = "/t" Then 
                Global $iTimeCmd = Number($CmdLine[$i+1])
                If $iTimeCmd <>  0 Then 
                    If IsInt($iTimeCmd) Then
                        MsgBox(64, "TEST", $iTimecmd)
                    EndIf 
                EndIf 
            EndIf 
            IF $CmdLine[$i] = "/p" Then 
                Global $iPauseCmd = Number($CmdLine[$i+1])
                If $iPauseCmd <>  0 Then 
                    If IsInt($iPauseCmd) Then
                        MsgBox(64, "TEST", $iPausecmd)
                    EndIf 
                EndIf 
            EndIF
        Next
    EndIf
    Alles anzeigen
  • Turnier Timer

    • sccssf
    • 28. Februar 2019 um 20:23
    Zitat von alpines

    Du verwendest glaube ich den falschen Parameter.

    In der ChangeTimer-Funktion benutzt du den Parameter $iTime nie, in der ChangeTimerPause-Funktion benutzt du aber respektive $iTimerPause.

    Wenn ich den $iTimerPause Wert ausgeben lasse liegt er irgendwo bei 700.000 bei mir, und das kann ja wohl nicht im Rahmen deiner Berechnung liegen.

    Ein kurzer Blick nach oben im Skript und ich sehe, dass du $iTimerPause außerhalb der Funktion global deklariert und definiert hast.

    Da der Parameter allerdings den selben Namen trägt, wird er immer den Parameter bzw. den lokalen Scope zuerst verwenden und dann den globalen.

    Gebe ich dem Parameter einen Namen (egal welchen) funktioniert der Balken einwandfrei.

    Alles anzeigen

    Ich hatte, dass die ganze Zeit im Kopf das ich da was nicht so sauber gemacht habe.

    Und den Wert mal anzeigen ist mir auch nicht in den Sinn gekommen.

    Werde ich mal umschreiben! Danke

  • Turnier Timer

    • sccssf
    • 28. Februar 2019 um 18:57

    Hallo,

    ok das Problem habe ich auch verstanden und gelöst.

    Jetzt kommt nur noch ein Problem wo ich nicht den Ansatz finde.

    Dies hat auch schon mal funktioniert und ich finde den Fehler nicht.

    Die $aProgress2 funktioniert nicht, dies ist die Pausenzeitanzeige. (Zeile 222)

    Die $aProgress1 funktioniert wie Sie soll. (Zeile 205)


    Code
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=prog.ico
    #AutoIt3Wrapper_Outfile=Spielzeit-Timer.exe
    #AutoIt3Wrapper_Res_Description=Spielzeit-Timer
    #AutoIt3Wrapper_Res_Fileversion=1.0.0.0
    #AutoIt3Wrapper_Res_LegalCopyright=Oscar (www.autoit.de)/geändert SCCSSF
    #AutoIt3Wrapper_Res_Language=1031
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    
    #Region Includes
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <Sound.au3>
    #include <StaticConstants.au3>
    #include <Timers.au3>
    #include <WinAPI.au3>
    #include <WinAPIGdi.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>
    #include <Misc.au3>
    #Include <GuiButton.au3>
    #include <EditConstants.au3>
    #include '_ProgressEx.au3'
    #include '_DateiEx.au3'
    #EndRegion Includes
    
    
    #Region single
    If _Singleton("Timer", 1) = 0 Then
        Exit
    EndIf
    #EndRegion
    
    #Region Optionen
    ;#NoTrayIcon
    Opt('MustDeclareVars', 1)
    Opt('TrayMenuMode', 1)
    Opt('GUIOnEventMode', 1)
    Opt('TrayOnEventMode', 1)
    #EndRegion Optionen
    
    _GDIPlus_Startup()
    
    #Region Konstanten deklarieren
    Global Const $sAppTitle = 'Spielzeit-Timer'
    Global Const $sAppVersion = '0.3'
    Global Const $sAppDate = '28.02.2019'
    Global Const $sAppAuthor = 'Oscar (www.autoit.de) / SCCCSF'
    Global Const $sAppDir = @AppDataDir & '\SP-Timer\'
    If Not FileExists($sAppDir) Then DirCreate($sAppDir)
    Global Const $sInifile = $sAppDir & 'Spielzeit-Timer.ini'
    Global $b7SegmentFont = _Segment7new()
    Global $t7SegmentFont = DllStructCreate('byte[' & BinaryLen($b7SegmentFont) & ']')
    DllStructSetData($t7SegmentFont, 1, $b7SegmentFont)
    Global $h7SegmentFont = _WinAPI_AddFontMemResourceEx(DllStructGetPtr($t7SegmentFont), DllStructGetSize($t7SegmentFont))
    Global $hUpBitmap = _GDIPlus_BitmapCreateFromMemory(_uppng())
    Global $hDownBitmap = _GDIPlus_BitmapCreateFromMemory(_downpng())
    Global $sSoundfile = @TempDir & '\glocke.mp3'
    If Not FileExists($sSoundfile) Then _glocke(True, @TempDir)
    Global $aSound = _SoundOpen($sSoundfile)
    Global Const $iAppDPI = RegRead('HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics', 'AppliedDPI')
    Global Const $iRed = 0, $iYellow = 60, $iGreen = 120, $iBlue = -150 ; Farbwerte/HUE gegenueber dem roten Standardwert (Werte von -180 bis +180 sind moeglich)
    Global Const $iWidth = 240, $iHeight = 360
    #EndRegion Konstanten deklarieren
    
    #Region globale Variablen
    Global $iTimerSeconds = IniRead($sInifile, 'Config', 'TimerSeconds', 600)
    Global $iTimerSecondsRes =  $iTimerSeconds
    Global $iTimerStep = IniRead($sInifile, 'Config', 'TimerStep', 10) ; In der Inidatei kann man die Schrittweite (in Sekunden) fuer die Timereinstellung festlegen
    Global $iTimerDiv = IniRead($sInifile, 'Config', 'TimerDiv', 1) ; In der Inidatei kann man die Schrittweite (in Menuten) fuer die letzte Minute festelegen
    Global $iTimerPause = IniRead($sInifile, 'Config', 'TimerPause', 300) ; In der Inidatei kann man die Schrittweite (in Sekunden) fuer die Pause festlegen
    Global $iTimerPauseRes =   $iTimerPause
    Global $bTimerOn = False, $iSeconds = $iTimerSeconds
    Global $bTimerOnPause = False, $iSecondsPause = $iTimerPause
    Global $sound1 = IniRead($sInifile, 'Sound', 'letzte-Minute', $sSoundfile)
    If Not FileExists($sound1) Then $sound1 = $sSoundfile
    Global $aSound1 = _SoundOpen($sound1)
    Global $sound2 = IniRead($sInifile, 'Sound', 'Spielende', $sSoundfile)
    If Not FileExists($sound2) Then $sound2 = $sSoundfile
    Global $aSound2 = _SoundOpen($sound2)
    Global $sound3 = IniRead($sInifile, 'Sound', 'Pause', $sSoundfile)
    If Not FileExists($sound3) Then $sound3 = $sSoundfile
    Global $aSound3 = _SoundOpen($sound3)
    #EndRegion globale Variablen
    
    #Region Fenster erstellen
    Global $hGui = GUICreate(StringFormat('%s  v%-3.3s', $sAppTitle, $sAppVersion), $iWidth, $iHeight, -1, -1, -1)
    GUISetOnEvent($GUI_EVENT_CLOSE, _Minimize)
    GUISetOnEvent($GUI_EVENT_MINIMIZE,  _Minimize)
    TraySetOnEvent(-7, "_Restore")
    GUISetBkColor(0x000000)
    GUISetIcon(@ScriptDir & '\stopwatch.ico', 0, $hGui)
    
    Global $Setting_Menu = GUICtrlCreateMenu("Menü")
    Global $Setting_Para = GUICtrlCreateMenuItem("Einstellungen", $Setting_Menu)
    GUICtrlSetOnEvent(-1, "_Settings")
    Global $Setting_exit = GUICtrlCreateMenuItem("Ende", $Setting_Menu)
    GUICtrlSetOnEvent(-1, "_Exit")
    Global $helpmenu = GUICtrlCreateMenu("?")
    Global $Info = GUICtrlCreateMenuItem("Version", $helpmenu)
    GUICtrlSetOnEvent(-1, "_showInfo")
    
    Global $idTime = GUICtrlCreateLabel(StringFormat('%02d:%02d', Int($iTimerSeconds / 60), Mod($iTimerSeconds, 60)), 20, 12, $iWidth - 60, 44, $SS_CENTER)
    GUICtrlSetColor(-1, 0x22FF22)
    GUICtrlSetFont(-1, 40 / $iAppDPI * 80, 400, 0, 'Segment7')
    Global $hGUi1 = GUICtrlCreateLabel("Spielzeit", 30, 80, 172, 33,$SS_CENTER)
    GUICtrlSetColor(-1, 0xFEFF22)
    GUICtrlSetFont(-1, 20)
    
    Global $idTime1 = GUICtrlCreateLabel(StringFormat('%02d:%02d', Int(($iTimerSeconds- $iTimerDiv*60) /60  ), Mod($iTimerSeconds, 60)), 20, 120, $iWidth - 60, 44, $SS_CENTER)
    GUICtrlSetColor(-1, 0x22FF22)
    GUICtrlSetFont(-1, 40 / $iAppDPI * 80, 400, 0, 'Segment7')
    Global $hGUi2 = GUICtrlCreateLabel("letzte Minute", 30, 158, 172, 33,$SS_CENTER)
    GUICtrlSetColor(-1, 0xFEFF22)
    GUICtrlSetFont(-1, 20)
    
    Global $idTime2 = GUICtrlCreateLabel(StringFormat('%02d:%02d', Int($iTimerPause / 60), Mod($iTimerPause, 60)), 20, 200, $iWidth - 60, 44, $SS_CENTER)
    GUICtrlSetColor(-1, 0x22FF22)
    GUICtrlSetFont(-1, 40 / $iAppDPI * 80, 400, 0, 'Segment7')
    Global $hGUi3 = GUICtrlCreateLabel("Pause", 30, 268, 172, 33,$SS_CENTER)
    GUICtrlSetColor(-1, 0xFEFF22)
    GUICtrlSetFont(-1, 20)
    
    
    Global $idUp = GUICtrlCreatePic('', $iWidth - 34, 6, 24, 24)
    GUICtrlSetOnEvent(-1, '_ChangeTimerSeconds')
    Global $hBMP = _GDIPlus_BitmapCreateDIBFromBitmap($hUpBitmap)
    _WinAPI_DeleteObject(GUICtrlSendMsg($idUp, $STM_SETIMAGE, $IMAGE_BITMAP, $hBMP))
    _WinAPI_DeleteObject($hBMP)
    
    Global $idDown = GUICtrlCreatePic('', $iWidth - 34, 34, 24, 24)
    GUICtrlSetOnEvent(-1, '_ChangeTimerSeconds')
    Global $hBMP = _GDIPlus_BitmapCreateDIBFromBitmap($hDownBitmap)
    _WinAPI_DeleteObject(GUICtrlSendMsg($idDown, $STM_SETIMAGE, $IMAGE_BITMAP, $hBMP))
    _WinAPI_DeleteObject($hBMP)
    
    Global $idUpP = GUICtrlCreatePic('', $iWidth - 34, 197, 24, 24)
    GUICtrlSetOnEvent(-1, '_ChangeTimerPauseSeconds')
    Global $hBMP = _GDIPlus_BitmapCreateDIBFromBitmap($hUpBitmap)
    _WinAPI_DeleteObject(GUICtrlSendMsg($idUpP, $STM_SETIMAGE, $IMAGE_BITMAP, $hBMP))
    _WinAPI_DeleteObject($hBMP)
    
    Global $idDownP = GUICtrlCreatePic('', $iWidth - 34, 225, 24, 24)
    GUICtrlSetOnEvent(-1, '_ChangeTimerPauseSeconds')
    Global $hBMP = _GDIPlus_BitmapCreateDIBFromBitmap($hDownBitmap)
    _WinAPI_DeleteObject(GUICtrlSendMsg($idDownP, $STM_SETIMAGE, $IMAGE_BITMAP, $hBMP))
    _WinAPI_DeleteObject($hBMP)
    
    Global $aProgress1 = _ProgressEx_Create(10, 60, $iWidth - 20, 15, $PE_NOTEXT)
    _ProgressEx_SetData($aProgress1, 100, $iGreen)
    
    Global $aProgress2 = _ProgressEx_Create(10, 250, $iWidth - 20, 15, $PE_NOTEXT)
    _ProgressEx_SetData($aProgress2, 100, -0)
    
    Global $idReset = GUICtrlCreateButton('Reset', 10, 310, 50, 25)
    GUICtrlSetFont(-1, 12 / $iAppDPI * 96, 600, 0, 'Tahoma')
    GUICtrlSetOnEvent(-1, '_ResetTimer')
    
    Global $idStop = GUICtrlCreateButton('Stop', 65, 310, 50, 25)
    GUICtrlSetFont(-1, 12 / $iAppDPI * 96, 600, 0, 'Tahoma')
    GUICtrlSetOnEvent(-1, '_StopTimer')
    GUICtrlSetState($idStop, $GUI_DISABLE)
    
    Global $idStart = GUICtrlCreateButton('Start', $iWidth - 120, 310, 110, 25, $BS_DEFPUSHBUTTON)
    GUICtrlSetFont(-1, 12 / $iAppDPI * 96, 600, 0, 'Tahoma')
    GUICtrlSetOnEvent(-1, '_StartTimer')
    #EndRegion Fenster erstellen
    
    #Region Fenster anzeigen und auf das Schliessen warten (der Rest ist funktionsgesteuert)
    Global $aAccelKeys[2][2] = [['{UP}', $idUp], ['{DOWN}', $idDown]]
    GUISetAccelerators($aAccelKeys)
    GUISetState(@SW_SHOW)
    _Timer_SetTimer($hGui, 1000, '_ChangeTimer')
    _Timer_SetTimer($hGui, 1000, '_ChangeTimerPause')
    WinWaitClose($hGui)
    Exit
    #EndRegion Fenster anzeigen und auf das Schliessen warten (der Rest ist funktionsgesteuert)
    
    #Region Funktionen
    Func _CloseMainGui()
        _Timer_KillAllTimers($hGui)
        _WinAPI_RemoveFontMemResourceEx($h7SegmentFont)
        $t7SegmentFont = 0
        _GDIPlus_BitmapDispose($hUpBitmap)
        _GDIPlus_BitmapDispose($hDownBitmap)
        _GDIPlus_Shutdown()
        _SoundClose($aSound)
        _SoundClose($aSound1)
        _SoundClose($aSound2)
        _SoundClose($aSound3)
        GUIDelete($hGui)
    EndFunc   ;==>_CloseMainGui
    
    Func _ChangeTimer($hWnd, $iMsg, $iIDTimer, $iTime, $idTime1, $idTime2,  $iSeconds)
        If Not $bTimerOn Then Return
        $iSeconds -= 1
            GUICtrlSetData($idTime, StringFormat('%02d:%02d', Int($iSeconds / 60), Mod($iSeconds, 60)))
    
        If (($iSeconds -$iTimerDiv*60) /60) > 0 Then
            GUICtrlSetData($idTime1, StringFormat('%02d:%02d', Int(($iSeconds- $iTimerDiv*60) / 60), Mod($iSeconds, 60)))
        Else
            GUICtrlSetData($idTime1, '00:00')
        EndIf
    
        _ProgressEx_SetData($aProgress1, 100 / $iTimerSeconds * $iSeconds, $iGreen)
    
        If (($iSeconds -$iTimerDiv*60) /60) = 0 Then
            _SoundPlay($aSound1)
        EndIf
        If $iSeconds = 0 Then
            $bTimerOn = False
            _SoundPlay($aSound2)
            $bTimerOnPause = True 
        EndIf
    EndFunc   ;==>_ChangeTimer
    
    Func _ChangeTimerPause($hWnd, $iMsg, $iIDTimer, $iTimerPause, $idTime1, $idTime2, $iSecondsPause)
        If Not $bTimerOnPause Then Return
        $iSecondsPause -= 1
            GUICtrlSetData($idTime2, StringFormat('%02d:%02d', Int($iSecondsPause / 60), Mod($iSecondsPause, 60)))
        
        _ProgressEx_SetData($aProgress2, 100 / $iTimerPause * $iSecondsPause, $iGreen)
        
        If $iSecondsPause = 0 Then
            $bTimerOnPause = False
            _SoundPlay($aSound3)
            _StopTimer()
            GUICtrlSetState($idStart, $GUI_DISABLE)
        EndIf
    EndFunc   ;==>_ChangeTimerPause
    
    
    
    Func _ChangeTimerSeconds()
        If $bTimerOn Then Return
        $iTimerSeconds += (@GUI_CtrlId = $idUp ? 1 : -1) * $iTimerStep
        If $iTimerSeconds < $iTimerStep Then $iTimerSeconds = 6000 - $iTimerStep
        If $iTimerSeconds > 6000 - $iTimerStep Then $iTimerSeconds = $iTimerStep
        $iSeconds = $iTimerSeconds
        GUICtrlSetData($idTime, StringFormat('%02d:%02d', Int($iSeconds / 60), Mod($iSeconds, 60)))
        GUICtrlSetData($idTime1, StringFormat('%02d:%02d', Int(($iSeconds- $iTimerDiv*60) / 60), Mod($iSeconds, 60)))
    EndFunc   ;==>_ChangeTimerSeconds
    
    Func _ChangeTimerPauseSeconds()
        If $bTimerOnPause Then Return
        $iTimerPause += (@GUI_CtrlId = $idUpP ? 1 : -1) * $iTimerStep
        If $iTimerPause < $iTimerStep Then $iTimerPause = 6000 - $iTimerStep
        If $iTimerPause > 6000 - $iTimerStep Then $iTimerPause = $iTimerStep
        $iSecondsPause     = $iTimerPause
        GUICtrlSetData($idTime2, StringFormat('%02d:%02d', Int($iSecondsPause / 60), Mod($iSecondsPause, 60)))
    EndFunc   ;==>_ChangeTimerPauseSeconds
    
    Func _ResetTimer()
            
        GUICtrlSetData($idTime, StringFormat('%02d:%02d', Int($iTimerSecondsRes / 60), Mod($iTimerSecondsRes, 60)))
        GUICtrlSetData($idTime1, StringFormat('%02d:%02d', Int(($iTimerSecondsRes- $iTimerDiv*60) / 60 ), Mod($iTimerSecondsRes, 60)))
        GUICtrlSetData($idTime2, StringFormat('%02d:%02d', Int($iTimerPauseRes / 60), Mod($iTimerPauseRes, 60)))
    
        Global $iTimerSecond = $iTimerSecondsRes
        Global $iSeconds = $iTimerSecondsRes
        Global $iTimerPause =  $iTimerPauseRes
        Global $iSecondsPause =  $iTimerPauseRes
    
        $bTimerOn = False
        $bTimerOnPause = False
    
        GUICtrlSetState($idStart, $GUI_ENABLE)
        GUICtrlSetState($idStop, $GUI_DISABLE)
        
        _ProgressEx_SetData($aProgress1, 100, $iGreen)
        _ProgressEx_SetData($aProgress2, 100, 0)
    
    EndFunc   ;==>_ResetTimer
    
    Func _StopTimer()
            $bTimerOn = False
            $bTimerOnPause = False
        GUICtrlSetState($idStart, $GUI_ENABLE)
        GUICtrlSetState($idStop, $GUI_DISABLE)
        GUICtrlSetState($idReset, $GUI_ENABLE)
        GUICtrlSetState($Setting_Para, $GUI_ENABLE)
        
    EndFunc   ;==>_StopTimer
    
    Func _StartTimer()
        $bTimerOn = True
        GUICtrlSetState($idStart, $GUI_DISABLE)
        GUICtrlSetState($idReset, $GUI_DISABLE)
        GUICtrlSetState($Setting_Para, $GUI_DISABLE)
        GUICtrlSetState($idStop, $GUI_ENABLE)
    EndFunc   ;==>_StartTimer
    
    #EndRegion Funktionen
    
    #Region Setting Menue
    Func _settings()
        GuiSETState(@SW_HIDE, $hGui)
    
        Global $sound1 = IniRead($sInifile, 'Sound', 'Spielanfang', "")
        Global $sound2 = IniRead($sInifile, 'Sound', 'Spielende', "")
        Global $sound3 = IniRead($sInifile, 'Sound', 'Pause', "")
        Global $idTime1E = IniRead($sInifile, 'Config', 'TimerSeconds', "600")
        Global $idTime2E = IniRead($sInifile, 'Config', 'TimerPause', "300") ; In der Inidatei kann man die Schrittweite (in Sekunden) fuer die Pausenzeit festlegen
        Global $idTime3E = IniRead($sInifile, 'Config', 'TimerStep', "10") ; In der Inidatei kann man die Schrittweite (in Sekunden) fuer die Timereinstellung festlegen
        
        Global $SettingGui = GUICreate(StringFormat('%s  v%-3.3s', "Einstellungen", $sAppVersion), 450, 360, -1, -1, -1)    
        ;==>_Sound 1
        Global $Label1 = GUICtrlCreateLabel("Sound-letzte-Minute", 8, 15, 150)
            GUICtrlSetFont(-1, 10, 800, 0, "Tahoma")
        Global $Liste1speichern = GUICtrlCreateInput($Sound1, 8, 40, 350, 21)
        Global $Datein1 = GUICtrlCreateButton("...", 370, 40, 25, 21)
        GUICtrlSetOnEvent(-1, "_settings_d1")
        
        ;==>_Sound 2
        Global $Label2 = GUICtrlCreateLabel("Sound-Spielende", 8, 70, 150)
            GUICtrlSetFont(-1, 10, 800, 0, "Tahoma")
        Global $Liste2speichern = GUICtrlCreateInput($Sound2, 8, 95, 350, 21)
        Global $Datein2 = GUICtrlCreateButton("...", 370, 95, 25, 21)
        GUICtrlSetOnEvent(-1, "_settings_d2")
        
        ;==>_Sound 3
        Global $Label3 = GUICtrlCreateLabel("Sound-Pausen-Ende", 8, 125, 150)
            GUICtrlSetFont(-1, 10, 800, 0, "Tahoma")
        Global $Liste3speichern = GUICtrlCreateInput($Sound3, 8, 150, 350, 21)
        Global $Datein3 = GUICtrlCreateButton("...", 370, 150, 25, 21)
        GUICtrlSetOnEvent(-1, "_settings_d3")
        
        ;==>_Spielzeit (Voreinstellung)
        Global $Label4 = GUICtrlCreateLabel("Spielzeit", 8, 180, 150)
            GUICtrlSetFont(-1, 10, 800, 0, "Tahoma")
        Global $Liste4speichern =  GUICtrlCreateInput($idTime1E,8,205,53,21,BitOr($ES_CENTER,$ES_NUMBER),$WS_EX_CLIENTEDGE)
            GUICtrlCreateLabel("in Sekunden",86,205,100,15,-1,-1)
                GUICtrlSetFont(-1, 10, 800, 0, "Tahoma")
        GUICtrlSetOnEvent(-1, "_settings_d3")
        
        ;==>_Pausenzeit (Voreinstellung)
        Global $Label5 = GUICtrlCreateLabel("Pausenzeit", 8, 230, 150)
            GUICtrlSetFont(-1, 10, 800, 0, "Tahoma")
        Global $Liste5speichern =  GUICtrlCreateInput($idTime2E,8,255,53,21,BitOr($ES_CENTER,$ES_NUMBER),$WS_EX_CLIENTEDGE)
            GUICtrlCreateLabel("in Sekunden",86,255,100,15,-1,-1)
                GUICtrlSetFont(-1, 10, 800, 0, "Tahoma")
        GUICtrlSetOnEvent(-1, "_settings_d3")
        
        ;==>Verstellung (Voreinstellung)
        Global $Label6 = GUICtrlCreateLabel("Verstellung", 8, 280, 150)
            GUICtrlSetFont(-1, 10, 800, 0, "Tahoma")
        Global $Liste6speichern =  GUICtrlCreateInput($idTime3E,8,305,53,21,BitOr($ES_CENTER,$ES_NUMBER),$WS_EX_CLIENTEDGE)
            GUICtrlCreateLabel("in Sekunden",86,305,100,15,-1,-1)
                GUICtrlSetFont(-1, 10, 800, 0, "Tahoma")
        GUICtrlSetOnEvent(-1, "_settings_d3")
        
        ;==>_Speichern/Abbrechen
        Global $Speichern1 = GUICtrlCreateButton("Speichern", 250, 310, 65, 25)
        GUICtrlSetOnEvent(-1, "_settings_save")
        Global $Abbrechen = GUICtrlCreateButton("Abbrechen", 330, 310, 65, 25)
        GUICtrlSetOnEvent(-1, "_settings_end")
        GUISetState(@SW_SHOW)
        GUISetOnEvent($GUI_EVENT_CLOSE, '_settings_end')
        
    EndFunc   ;==>_settings
    
    Func _settings_d1()
        global $Datei_d1 = FileOpenDialog("Bitte Sound Wählen", "c:\", "Sound (*.mp3)", 1 + 2) ;=>Datei auswählen
        GUICtrlSetData($Liste1speichern, $Datei_d1) ;=> Datei Anzeigen
    EndFunc   ;==>_settings_d1
    
    Func _settings_d2()
        global $Datei_d2 = FileOpenDialog("Bitte Sound Wählen", "c:\", "Sound (*.mp3)", 1 + 2) ;=>Datei auswählen
        GUICtrlSetData($Liste2speichern, $Datei_d2) ;=> Datei Anzeigen
    EndFunc   ;==>_settings_d2
    
    Func _settings_d3()
        global $Datei_d3 = FileOpenDialog("Bitte Sound Wählen", "c:\", "Sound (*.mp3)", 1 + 2) ;=>Datei auswählen
        GUICtrlSetData($Liste3speichern, $Datei_d3) ;=> Datei Anzeigen
    EndFunc   ;==>_settings_d3
    
    Func _settings_end()
        GUIDelete($SettingGui)
        GUISetState(@SW_SHOW, $hGui)
    EndFunc   ;==>_settings_end
    
    Func _settings_save()
        local $L1sp = GUICtrlRead($Liste1speichern,  1)
            if $L1sp =  "" then
        Else 
            IniWrite($sInifile, 'Sound', 'letzte-Minute',GUICtrlRead($Liste1speichern))
        EndIf
             
        local $L2sp = GUICtrlRead($Liste2speichern,  1)
        if $L2sp =  "" then
        Else 
            IniWrite($sInifile, 'Sound', 'Spielende',GUICtrlRead($Liste2speichern))
        EndIf    
    
        local $L3sp = GUICtrlRead($Liste3speichern,  1)
        if $L3sp =  "" then
        Else 
            IniWrite($sInifile, 'Sound', 'Pause',GUICtrlRead($Liste3speichern))
        EndIf    
    
        local $L4sp = GUICtrlRead($Liste4speichern,  1)
        if $L4sp =  "" then
        
        ElseIf $L4sp =  0 then
            
        Else 
            IniWrite($sInifile, 'Config', 'TimerSeconds',GUICtrlRead($Liste4speichern))
        EndIf
    
        local $L5sp = GUICtrlRead($Liste5speichern,  1)
        if $L5sp =  "" then
        
            ElseIf $L5sp =  0 then
        
        Else 
            IniWrite($sInifile, 'Config', 'TimerPause',GUICtrlRead($Liste5speichern))
        EndIf
    
        local $L6sp = GUICtrlRead($Liste5speichern,  1)
        if $L6sp =  "" then
        
        ElseIf $L6sp =  0 then
        
        Else 
            IniWrite($sInifile, 'Config', 'TimerStep',GUICtrlRead($Liste6speichern))
        EndIf
        
        Global $sound1 = IniRead($sInifile, 'Sound', 'letzte-Minute', "")
        Global $sound2 = IniRead($sInifile, 'Sound', 'Spielende', "")
        Global $sound3 = IniRead($sInifile, 'Sound', 'Pause', "")
        Global $iTimerSeconds = IniRead($sInifile, 'Config', 'TimerSeconds', "")
        Global $iTimerSecondsRes =  $iTimerSeconds
        Global $iTimerPause= IniRead($sInifile, 'Config', 'TimerPause', "")
        Global $iTimerPauseRes =  $iTimerPause
        Global $iTimerStep = IniRead($sInifile, 'Config', 'TimerStep', "")
        
        
        GUIDelete($SettingGui)
        GUISetState(@SW_SHOWnormal, $hGui)
        _ResetTimer()
    EndFunc   ;==>_settings_save
    #EndRegion setting menue
    
    #Region Menue
    Func _Showinfo()
        MsgBox(0, "Info", "Version "& $sAppVersion & @CRLF & $sAppDate  & @CRLF & $sAppAuthor)
    EndFunc   ;==>_Showinfo
    
    Func _Exit()
        _CloseMainGui()
    EndFunc   ;==>_Exit
    
    Func _Minimize()
        TraySetState(4)
        GUISetState(@SW_HIDE)
    EndFunc   ;==>_Minimize
    
    Func _Restore()
        TraySetState(8)
        GUISetState(@SW_SHOW)
    EndFunc   ;==>_Restore
    #EndRegion menue
    Alles anzeigen
  • Turnier Timer

    • sccssf
    • 26. Februar 2019 um 16:08

    Hallo alpines,

    so habe dran rum geschrieben. Fehlermeldungen sind erstmal weg.

    Folgendes Problem habe:

    Wenn Spielzeit auf 0 gelaufen ist soll die Pausenzeit starten.

    Das bekomme ich nicht hin.
    Die "_ProgressEx.au3" und "_DateiEx.au3" hat sich nicht geändert.


    Code
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=prog.ico
    #AutoIt3Wrapper_Outfile=Spielzeit-Timer.exe
    #AutoIt3Wrapper_Res_Description=Spielzeit-Timer
    #AutoIt3Wrapper_Res_Fileversion=1.0.0.0
    #AutoIt3Wrapper_Res_LegalCopyright=Oscar (www.autoit.de)/geändert SCCSSF
    #AutoIt3Wrapper_Res_Language=1031
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    
    #Region Includes
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <Sound.au3>
    #include <StaticConstants.au3>
    #include <Timers.au3>
    #include <WinAPI.au3>
    #include <WinAPIGdi.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>
    #include <Misc.au3>
    #Include <GuiButton.au3>
    #include <EditConstants.au3>
    #include '_ProgressEx.au3'
    #include '_DateiEx.au3'
    #EndRegion Includes
    
    
    #Region single
    If _Singleton("Timer", 1) = 0 Then
        Exit
    EndIf
    #EndRegion
    
    #Region Optionen
    ;#NoTrayIcon
    Opt('MustDeclareVars', 1)
    Opt('TrayMenuMode', 1)
    Opt('GUIOnEventMode', 1)
    Opt('TrayOnEventMode', 1)
    #EndRegion Optionen
    
    _GDIPlus_Startup()
    
    #Region Konstanten deklarieren
    Global Const $sAppTitle = 'Spielzeit-Timer'
    Global Const $sAppVersion = '0.2'
    Global Const $sAppDate = '25.02.2019'
    Global Const $sAppAuthor = 'Oscar (www.autoit.de) / SCCCSF'
    Global Const $sAppDir = @AppDataDir & '\SP-Timer\'
    If Not FileExists($sAppDir) Then DirCreate($sAppDir)
    Global Const $sInifile = $sAppDir & 'Spielzeit-Timer.ini'
    Global $b7SegmentFont = _Segment7new()
    Global $t7SegmentFont = DllStructCreate('byte[' & BinaryLen($b7SegmentFont) & ']')
    DllStructSetData($t7SegmentFont, 1, $b7SegmentFont)
    Global $h7SegmentFont = _WinAPI_AddFontMemResourceEx(DllStructGetPtr($t7SegmentFont), DllStructGetSize($t7SegmentFont))
    Global $hUpBitmap = _GDIPlus_BitmapCreateFromMemory(_uppng())
    Global $hDownBitmap = _GDIPlus_BitmapCreateFromMemory(_downpng())
    Global $sSoundfile = @TempDir & '\glocke.mp3'
    If Not FileExists($sSoundfile) Then _glocke(True, @TempDir)
    Global $aSound = _SoundOpen($sSoundfile)
    Global Const $iAppDPI = RegRead('HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics', 'AppliedDPI')
    Global Const $iRed = 0, $iYellow = 60, $iGreen = 120, $iBlue = -150 ; Farbwerte/HUE gegenueber dem roten Standardwert (Werte von -180 bis +180 sind moeglich)
    Global Const $iWidth = 240, $iHeight = 360
    #EndRegion Konstanten deklarieren
    
    #Region globale Variablen
    Global $iTimerSeconds = IniRead($sInifile, 'Config', 'TimerSeconds', 600)
    Global $iTimerStep = IniRead($sInifile, 'Config', 'TimerStep', 10) ; In der Inidatei kann man die Schrittweite (in Sekunden) fuer die Timereinstellung festlegen
    Global $iTimerDiv = IniRead($sInifile, 'Config', 'TimerDiv', 1) ; In der Inidatei kann man die Schrittweite (in Menuten) fuer die letzte Minute festelegen
    Global $iTimerPause = IniRead($sInifile, 'Config', 'TimerPause', 300) ; In der Inidatei kann man die Schrittweite (in Sekunden) fuer die Pause festlegen
    Global $bTimerOn = False, $iSeconds = $iTimerSeconds
    Global $bTimerOnPause = False, $iSecondsPause = $iTimerPause
    Global $sound1 = IniRead($sInifile, 'Sound', 'Spielanfang', $sSoundfile)
    Global $aSound1 = _SoundOpen($sound1)
    Global $sound2 = IniRead($sInifile, 'Sound', 'Spielende', $sSoundfile)
    Global $aSound2 = _SoundOpen($sound2)
    Global $sound3 = IniRead($sInifile, 'Sound', 'Pause', $sSoundfile)
    Global $aSound3 = _SoundOpen($sound3)
    #EndRegion globale Variablen
    
    #Region Fenster erstellen
    Global $hGui = GUICreate(StringFormat('%s  v%-3.3s', $sAppTitle, $sAppVersion), $iWidth, $iHeight, -1, -1, -1)
    GUISetOnEvent($GUI_EVENT_CLOSE, _Minimize)
    GUISetOnEvent($GUI_EVENT_MINIMIZE,  _Minimize)
    TraySetOnEvent(-7, "_Restore")
    GUISetBkColor(0x000000)
    GUISetIcon(@ScriptDir & '\stopwatch.ico', 0, $hGui)
    
    Global $Setting_Menu = GUICtrlCreateMenu("Menü")
    Global $Setting_Para = GUICtrlCreateMenuItem("Einstellungen", $Setting_Menu)
    GUICtrlSetOnEvent(-1, "_Settings")
    Global $Setting_exit = GUICtrlCreateMenuItem("Ende", $Setting_Menu)
    GUICtrlSetOnEvent(-1, "_Exit")
    Global $helpmenu = GUICtrlCreateMenu("?")
    Global $Info = GUICtrlCreateMenuItem("Version", $helpmenu)
    GUICtrlSetOnEvent(-1, "_showInfo")
    
    Global $idTime = GUICtrlCreateLabel(StringFormat('%02d:%02d', Int($iTimerSeconds / 60), Mod($iTimerSeconds, 60)), 20, 12, $iWidth - 60, 44, $SS_CENTER)
    GUICtrlSetColor(-1, 0x22FF22)
    GUICtrlSetFont(-1, 40 / $iAppDPI * 80, 400, 0, 'Segment7')
    Global $hGUi1 = GUICtrlCreateLabel("Spielzeit", 30, 80, 172, 33,$SS_CENTER)
    GUICtrlSetColor(-1, 0xFEFF22)
    GUICtrlSetFont(-1, 20)
    
    Global $idTime1 = GUICtrlCreateLabel(StringFormat('%02d:%02d', Int(($iTimerSeconds- $iTimerDiv*60) /60  ), Mod($iTimerSeconds, 60)), 20, 120, $iWidth - 60, 44, $SS_CENTER)
    GUICtrlSetColor(-1, 0x22FF22)
    GUICtrlSetFont(-1, 40 / $iAppDPI * 80, 400, 0, 'Segment7')
    Global $hGUi2 = GUICtrlCreateLabel("letzte Minute", 30, 158, 172, 33,$SS_CENTER)
    GUICtrlSetColor(-1, 0xFEFF22)
    GUICtrlSetFont(-1, 20)
    
    Global $idTime2 = GUICtrlCreateLabel(StringFormat('%02d:%02d', Int($iTimerPause / 60), Mod($iTimerPause, 60)), 20, 200, $iWidth - 60, 44, $SS_CENTER)
    GUICtrlSetColor(-1, 0x22FF22)
    GUICtrlSetFont(-1, 40 / $iAppDPI * 80, 400, 0, 'Segment7')
    Global $hGUi3 = GUICtrlCreateLabel("Pause", 30, 268, 172, 33,$SS_CENTER)
    GUICtrlSetColor(-1, 0xFEFF22)
    GUICtrlSetFont(-1, 20)
    
    
    Global $idUp = GUICtrlCreatePic('', $iWidth - 34, 6, 24, 24)
    GUICtrlSetOnEvent(-1, '_ChangeTimerSeconds')
    Global $hBMP = _GDIPlus_BitmapCreateDIBFromBitmap($hUpBitmap)
    _WinAPI_DeleteObject(GUICtrlSendMsg($idUp, $STM_SETIMAGE, $IMAGE_BITMAP, $hBMP))
    _WinAPI_DeleteObject($hBMP)
    
    Global $idDown = GUICtrlCreatePic('', $iWidth - 34, 34, 24, 24)
    GUICtrlSetOnEvent(-1, '_ChangeTimerSeconds')
    Global $hBMP = _GDIPlus_BitmapCreateDIBFromBitmap($hDownBitmap)
    _WinAPI_DeleteObject(GUICtrlSendMsg($idDown, $STM_SETIMAGE, $IMAGE_BITMAP, $hBMP))
    _WinAPI_DeleteObject($hBMP)
    
    Global $idUpP = GUICtrlCreatePic('', $iWidth - 34, 197, 24, 24)
    GUICtrlSetOnEvent(-1, '_ChangeTimerPauseSeconds')
    Global $hBMP = _GDIPlus_BitmapCreateDIBFromBitmap($hUpBitmap)
    _WinAPI_DeleteObject(GUICtrlSendMsg($idUpP, $STM_SETIMAGE, $IMAGE_BITMAP, $hBMP))
    _WinAPI_DeleteObject($hBMP)
    
    Global $idDownP = GUICtrlCreatePic('', $iWidth - 34, 225, 24, 24)
    GUICtrlSetOnEvent(-1, '_ChangeTimerPauseSeconds')
    Global $hBMP = _GDIPlus_BitmapCreateDIBFromBitmap($hDownBitmap)
    _WinAPI_DeleteObject(GUICtrlSendMsg($idDownP, $STM_SETIMAGE, $IMAGE_BITMAP, $hBMP))
    _WinAPI_DeleteObject($hBMP)
    
    Global $aProgress1 = _ProgressEx_Create(10, 60, $iWidth - 20, 15, $PE_NOTEXT)
    _ProgressEx_SetData($aProgress1, 100, $iGreen)
    
    Global $aProgress2 = _ProgressEx_Create(10, 250, $iWidth - 20, 15, $PE_NOTEXT)
    _ProgressEx_SetData($aProgress2, 100, -0)
    
    Global $idReset = GUICtrlCreateButton('Reset', 10, 310, 50, 25)
    GUICtrlSetFont(-1, 12 / $iAppDPI * 96, 600, 0, 'Tahoma')
    GUICtrlSetOnEvent(-1, '_ResetTimer')
    
    Global $idStop = GUICtrlCreateButton('Stop', 65, 310, 50, 25)
    GUICtrlSetFont(-1, 12 / $iAppDPI * 96, 600, 0, 'Tahoma')
    GUICtrlSetOnEvent(-1, '_StopTimer')
    GUICtrlSetState($idStop, $GUI_DISABLE)
    
    Global $idStart = GUICtrlCreateButton('Start', $iWidth - 120, 310, 110, 25, $BS_DEFPUSHBUTTON)
    GUICtrlSetFont(-1, 12 / $iAppDPI * 96, 600, 0, 'Tahoma')
    GUICtrlSetOnEvent(-1, '_StartTimer')
    #EndRegion Fenster erstellen
    
    #Region Fenster anzeigen und auf das Schliessen warten (der Rest ist funktionsgesteuert)
    Global $aAccelKeys[2][2] = [['{UP}', $idUp], ['{DOWN}', $idDown]]
    GUISetAccelerators($aAccelKeys)
    GUISetState(@SW_SHOW)
    ;GUIRegisterMsg($WM_MOUSEWHEEL, '_WM_MOUSEWHEEL')
    _Timer_SetTimer($hGui, 1000, '_ChangeTimer')
    WinWaitClose($hGui)
    Exit
    #EndRegion Fenster anzeigen und auf das Schliessen warten (der Rest ist funktionsgesteuert)
    
    #Region Funktionen
    Func _CloseMainGui()
        _Timer_KillAllTimers($hGui)
        _WinAPI_RemoveFontMemResourceEx($h7SegmentFont)
        $t7SegmentFont = 0
        _GDIPlus_BitmapDispose($hUpBitmap)
        _GDIPlus_BitmapDispose($hDownBitmap)
        _GDIPlus_Shutdown()
        _SoundClose($aSound)
        _SoundClose($aSound1)
        _SoundClose($aSound2)
        _SoundClose($aSound3)
        GUIDelete($hGui)
    EndFunc   ;==>_CloseMainGui
    
    Func _ChangeTimer($hWnd, $iMsg, $iIDTimer, $iTime, $idTime1, $idTime2)
        If Not $bTimerOn Then Return
        $iSeconds -= 1
            GUICtrlSetData($idTime, StringFormat('%02d:%02d', Int($iSeconds / 60), Mod($iSeconds, 60)))
    
        If (($iSeconds -$iTimerDiv*60) /60) > 0 Then
            GUICtrlSetData($idTime1, StringFormat('%02d:%02d', Int(($iSeconds- $iTimerDiv*60) / 60), Mod($iSeconds, 60)))
        Else
            GUICtrlSetData($idTime1, '00:00')
        EndIf
    
        _ProgressEx_SetData($aProgress1, 100 / $iTimerSeconds * $iSeconds, $iGreen)
        If (($iSeconds -$iTimerDiv*60) /60) = 0 Then
            _SoundPlay($aSound3)
        EndIf
        If $iSeconds = 0 Then
            $bTimerOn = False
            _SoundPlay($aSound2)
            $bTimerOnPause = True 
        EndIf
    EndFunc   ;==>_ChangeTimer
    
    Func _ChangeTimerPause($hWnd, $iMsg, $iIDTimer, $iTimePause, $idTime1, $idTime2)
        If Not $bTimerOnPause Then Return
        $iSecondsPause -= 1
            GUICtrlSetData($idTime2, StringFormat('%02d:%02d', Int($iTimerPause / 60), Mod($iTimerPause, 60)))
    
        If (($iSecondsPause -$iTimerDiv*60) /60) > 0 Then
        GUICtrlSetData($idTime2, StringFormat('%02d:%02d', Int($iTimerPause / 60), Mod($iTimerPause, 60)))
        Else
            GUICtrlSetData($idTime2, '00:00')
        EndIf
    
        
        _ProgressEx_SetData($aProgress2, 100 / $iTimerSeconds * $iTimerPause, $iGreen)
        If $iTimerPause = 0 Then
            $bTimerOnPause = False
            _SoundPlay($aSound1)
        EndIf
    EndFunc   ;==>_ChangeTimerPause
    
    ;~ Func _WM_MOUSEWHEEL($hWnd, $iMsg, $wParam, $lParam)
    ;~     Local $iWheel = _WinAPI_HiWord($wParam) / 120 ; down = -1, up = 1
    ;~     Local $aGuiInfo = GUIGetCursorInfo($hGui)
    ;~     Switch $aGuiInfo[4]
    ;~         Case $idTime
    ;~             If $bTimerOn Then Return
    ;~             $iTimerSeconds += $iWheel * $iTimerStep
    ;~             If $iTimerSeconds < $iTimerStep Then $iTimerSeconds = 6000 - $iTimerStep
    ;~             If $iTimerSeconds > 6000 - $iTimerStep Then $iTimerSeconds = $iTimerStep
    ;~             $iSeconds = $iTimerSeconds
    ;~             GUICtrlSetData($idTime, StringFormat('%02d:%02d', Int($iSeconds / 60), Mod($iSeconds, 60)))
    ;~             Return
    ;~         Case Else
    ;~             Return $GUI_RUNDEFMSG
    ;~     EndSwitch
    ;~     Return $GUI_RUNDEFMSG
    ;~ EndFunc   ;==>_WM_MOUSEWHEEL
    
    Func _ChangeTimerSeconds()
        If $bTimerOn Then Return
        $iTimerSeconds += (@GUI_CtrlId = $idUp ? 1 : -1) * $iTimerStep
        If $iTimerSeconds < $iTimerStep Then $iTimerSeconds = 6000 - $iTimerStep
        If $iTimerSeconds > 6000 - $iTimerStep Then $iTimerSeconds = $iTimerStep
        $iSeconds = $iTimerSeconds
        GUICtrlSetData($idTime, StringFormat('%02d:%02d', Int($iSeconds / 60), Mod($iSeconds, 60)))
        GUICtrlSetData($idTime1, StringFormat('%02d:%02d', Int(($iSeconds- $iTimerDiv*60) / 60), Mod($iSeconds, 60)))
    EndFunc   ;==>_ChangeTimerSeconds
    
    Func _ChangeTimerPauseSeconds()
        If $bTimerOnPause Then Return
        $iTimerPause += (@GUI_CtrlId = $idUpP ? 1 : -1) * $iTimerStep
        If $iTimerPause < $iTimerStep Then $iTimerSeconds = 6000 - $iTimerStep
        If $iTimerPause > 6000 - $iTimerStep Then $iTimerPause = $iTimerStep
        $iSeconds = $iTimerSeconds
        GUICtrlSetData($idTime2, StringFormat('%02d:%02d', Int($iTimerPause / 60), Mod($iTimerPause, 60)))
    EndFunc   ;==>_ChangeTimerPauseSeconds
    
        Func _ResetTimer()
        $iSeconds = $iTimerSeconds
        GUICtrlSetData($idTime, StringFormat('%02d:%02d', Int($iSeconds / 60), Mod($iSeconds, 60)))
        GUICtrlSetData($idTime1, StringFormat('%02d:%02d', Int(($iSeconds- $iTimerDiv*60) / 60 ), Mod($iSeconds, 60)))
        GUICtrlSetData($idTime2, StringFormat('%02d:%02d', Int($iTimerPause / 60), Mod($iTimerPause, 60)))
    
        $bTimerOn = False
        $bTimerOnPause = False
    
        GUICtrlSetState($idStart, $GUI_ENABLE)
        GUICtrlSetState($idStop, $GUI_DISABLE)
        
        _ProgressEx_SetData($aProgress1, 100, $iGreen)
    EndFunc   ;==>_ResetTimer
    
    Func _StopTimer()
            $bTimerOn = False
            $bTimerOnPause = False
        GUICtrlSetState($idStart, $GUI_ENABLE)
        GUICtrlSetState($idStop, $GUI_DISABLE)
        GUICtrlSetState($idReset, $GUI_ENABLE)
        GUICtrlSetState($Setting_Para, $GUI_ENABLE)
        
    EndFunc   ;==>_StopTimer
    
    Func _StartTimer()
        $bTimerOn = True
        GUICtrlSetState($idStart, $GUI_DISABLE)
        GUICtrlSetState($idReset, $GUI_DISABLE)
        GUICtrlSetState($Setting_Para, $GUI_DISABLE)
        GUICtrlSetState($idStop, $GUI_ENABLE)
    EndFunc   ;==>_StartTimer
    
    Func _IniWrite()
        IniWrite($sInifile, 'Config', 'TimerSeconds', $iTimerSeconds)
        IniWrite($sInifile, 'Config', 'TimerStep', $iTimerStep)
        IniWrite($sInifile, 'Config', 'TimerDiv', $iTimerDiv)
    EndFunc    ;==>_IniWrite
    #EndRegion Funktionen
    
    #Region Setting Menue
    Func _settings()
        GuiSETState(@SW_HIDE, $hGui)
    
        Global $sound1 = IniRead($sInifile, 'Sound', 'Spielanfang', "")
        Global $sound2 = IniRead($sInifile, 'Sound', 'Spielende', "")
        Global $sound3 = IniRead($sInifile, 'Sound', 'Pause', "")
        Global $idTime1E = IniRead($sInifile, 'Config', 'TimerSeconds', "600")
        Global $idTime2E = IniRead($sInifile, 'Config', 'TimerPause', "300") ; In der Inidatei kann man die Schrittweite (in Sekunden) fuer die Pausenzeit festlegen
        Global $idTime3E = IniRead($sInifile, 'Config', 'TimerStep', "10") ; In der Inidatei kann man die Schrittweite (in Sekunden) fuer die Timereinstellung festlegen
        
        Global $SettingGui = GUICreate(StringFormat('%s  v%-3.3s', "Einstellungen", $sAppVersion), 450, 360, -1, -1, -1)    
        ;==>_Sound 1
        Global $Label1 = GUICtrlCreateLabel("Sound-Spielanfang", 8, 15, 150)
            GUICtrlSetFont(-1, 10, 800, 0, "Tahoma")
        Global $Liste1speichern = GUICtrlCreateInput($Sound1, 8, 40, 350, 21)
        Global $Datein1 = GUICtrlCreateButton("...", 370, 40, 25, 21)
        GUICtrlSetOnEvent(-1, "_settings_d1")
        
        ;==>_Sound 2
        Global $Label2 = GUICtrlCreateLabel("Sound-Spielende", 8, 70, 150)
            GUICtrlSetFont(-1, 10, 800, 0, "Tahoma")
        Global $Liste2speichern = GUICtrlCreateInput($Sound2, 8, 95, 350, 21)
        Global $Datein2 = GUICtrlCreateButton("...", 370, 95, 25, 21)
        GUICtrlSetOnEvent(-1, "_settings_d2")
        
        ;==>_Sound 3
        Global $Label3 = GUICtrlCreateLabel("Sound-Pause", 8, 125, 150)
            GUICtrlSetFont(-1, 10, 800, 0, "Tahoma")
        Global $Liste3speichern = GUICtrlCreateInput($Sound3, 8, 150, 350, 21)
        Global $Datein3 = GUICtrlCreateButton("...", 370, 150, 25, 21)
        GUICtrlSetOnEvent(-1, "_settings_d3")
        
        ;==>_Spielzeit (Voreinstellung)
        Global $Label4 = GUICtrlCreateLabel("Spielzeit", 8, 180, 150)
            GUICtrlSetFont(-1, 10, 800, 0, "Tahoma")
        Global $Liste4speichern =  GUICtrlCreateInput($idTime1E,8,205,53,21,BitOr($ES_CENTER,$ES_NUMBER),$WS_EX_CLIENTEDGE)
            GUICtrlCreateLabel("in Sekunden",86,205,100,15,-1,-1)
                GUICtrlSetFont(-1, 10, 800, 0, "Tahoma")
        GUICtrlSetOnEvent(-1, "_settings_d3")
        
        ;==>_Pausenzeit (Voreinstellung)
        Global $Label5 = GUICtrlCreateLabel("Pausenzeit", 8, 230, 150)
            GUICtrlSetFont(-1, 10, 800, 0, "Tahoma")
        Global $Liste5speichern =  GUICtrlCreateInput($idTime2E,8,255,53,21,BitOr($ES_CENTER,$ES_NUMBER),$WS_EX_CLIENTEDGE)
            GUICtrlCreateLabel("in Sekunden",86,255,100,15,-1,-1)
                GUICtrlSetFont(-1, 10, 800, 0, "Tahoma")
        GUICtrlSetOnEvent(-1, "_settings_d3")
        
        ;==>Verstellung (Voreinstellung)
        Global $Label6 = GUICtrlCreateLabel("Verstellung", 8, 280, 150)
            GUICtrlSetFont(-1, 10, 800, 0, "Tahoma")
        Global $Liste6speichern =  GUICtrlCreateInput($idTime3E,8,305,53,21,BitOr($ES_CENTER,$ES_NUMBER),$WS_EX_CLIENTEDGE)
            GUICtrlCreateLabel("in Sekunden",86,305,100,15,-1,-1)
                GUICtrlSetFont(-1, 10, 800, 0, "Tahoma")
        GUICtrlSetOnEvent(-1, "_settings_d3")
        
        ;==>_Speichern/Abbrechen
        Global $Speichern1 = GUICtrlCreateButton("Speichern", 250, 310, 65, 25)
        GUICtrlSetOnEvent(-1, "_settings_save")
        Global $Abbrechen = GUICtrlCreateButton("Abbrechen", 330, 310, 65, 25)
        GUICtrlSetOnEvent(-1, "_settings_end")
        GUISetState(@SW_SHOW)
        GUISetOnEvent($GUI_EVENT_CLOSE, '_settings_end')
        
    EndFunc   ;==>_settings
    
    Func _settings_d1()
        global $Datei_d1 = FileOpenDialog("Bitte Sound Wählen", "c:\", "Sound (*.mp3)", 1 + 2) ;=>Datei auswählen
        GUICtrlSetData($Liste1speichern, $Datei_d1) ;=> Datei Anzeigen
    EndFunc   ;==>_settings_d1
    
    Func _settings_d2()
        global $Datei_d2 = FileOpenDialog("Bitte Sound Wählen", "c:\", "Sound (*.mp3)", 1 + 2) ;=>Datei auswählen
        GUICtrlSetData($Liste2speichern, $Datei_d2) ;=> Datei Anzeigen
    EndFunc   ;==>_settings_d2
    
    Func _settings_d3()
        global $Datei_d3 = FileOpenDialog("Bitte Sound Wählen", "c:\", "Sound (*.mp3)", 1 + 2) ;=>Datei auswählen
        GUICtrlSetData($Liste3speichern, $Datei_d3) ;=> Datei Anzeigen
    EndFunc   ;==>_settings_d3
    
    Func _settings_end()
        GUIDelete($SettingGui)
        GUISetState(@SW_SHOW, $hGui)
    EndFunc   ;==>_settings_end
    
    Func _settings_save()
        local $L1sp = GUICtrlRead($Liste1speichern,  1)
            if $L1sp =  "" then
        Else 
            IniWrite($sInifile, 'Sound', 'Spielanfang',GUICtrlRead($Liste1speichern))
        EndIf
             
        local $L2sp = GUICtrlRead($Liste2speichern,  1)
        if $L2sp =  "" then
        Else 
            IniWrite($sInifile, 'Sound', 'Spielende',GUICtrlRead($Liste2speichern))
        EndIf    
    
        local $L3sp = GUICtrlRead($Liste3speichern,  1)
        if $L3sp =  "" then
        Else 
            IniWrite($sInifile, 'Sound', 'Pause',GUICtrlRead($Liste3speichern))
        EndIf    
    
        local $L4sp = GUICtrlRead($Liste4speichern,  1)
        if $L4sp =  "" then
        Else 
            IniWrite($sInifile, 'Config', 'TimerSeconds',GUICtrlRead($Liste4speichern))
        EndIf
    
        local $L5sp = GUICtrlRead($Liste5speichern,  1)
        if $L5sp =  "" then
        Else 
            IniWrite($sInifile, 'Config', 'TimerPause',GUICtrlRead($Liste5speichern))
        EndIf
    
        local $L6sp = GUICtrlRead($Liste5speichern,  1)
        if $L6sp =  "" then
        Else 
            IniWrite($sInifile, 'Config', 'TimerStep',GUICtrlRead($Liste6speichern))
        EndIf
        
        Global $sound1 = IniRead($sInifile, 'Sound', 'Spielanfang', "")
        Global $sound2 = IniRead($sInifile, 'Sound', 'Spielende', "")
        Global $sound3 = IniRead($sInifile, 'Sound', 'Pause', "")
        Global $iTimerSeconds = IniRead($sInifile, 'Config', 'TimerSeconds', "")
        Global $iTimerPause= IniRead($sInifile, 'Config', 'TimerPause', "")
        Global $iTimerStep = IniRead($sInifile, 'Config', 'TimerStep', "")
        
        GUIDelete($SettingGui)
        GUISetState(@SW_SHOWnormal, $hGui)
        _ResetTimer()
    EndFunc   ;==>_settings_save
    #EndRegion setting menue
    
    #Region Menue
    Func _Showinfo()
        MsgBox(0, "Info", "Version "& $sAppVersion & @CRLF & $sAppDate  & @CRLF & $sAppAuthor)
    EndFunc   ;==>_Showinfo
    
    Func _Exit()
        _CloseMainGui()
    EndFunc   ;==>_Exit
    
    Func _Minimize()
        TraySetState(4)
        GUISetState(@SW_HIDE)
    EndFunc   ;==>_Minimize
    
    Func _Restore()
        TraySetState(8)
        GUISetState(@SW_SHOW)
    EndFunc   ;==>_Restore
    #EndRegion menue
    Alles anzeigen
  • Turnier Timer

    • sccssf
    • 25. Februar 2019 um 19:16
    Zitat von alpines

    Das Skript ist so nicht lauffähig, es tauchen dutzende Fehlermeldungen auf. Bitte poste doch ein vollständiges Skript oder lade ein Archiv mit den entsprechenden Dateien hoch.

    Wobei ich den ersten Fehler gerade schon gefunden habe.
    Funktion habe ich _ChangeTimerPauseSeconds geändert und jetzt klappt es mit dem hoch und runter.
    Allerdings nimmt er noch die normale Zeit. Beim ersten einstellen.
    Auch das Reseten der Pausen Zeit geht nicht.

    Danke schon mal für die Hilfe.

    Dateien

    _ProgressEx.au3 8,6 kB – 321 Downloads Spielzeit ohne.au3 18,63 kB – 342 Downloads _DateiEx.au3 136,03 kB – 343 Downloads
  • Turnier Timer

    • sccssf
    • 25. Februar 2019 um 19:02

    Hallo,

    habe mal am Wochenende weiter geschrieben.

    Einstellungsmenü gemacht.

    Jetzt habe ich das Problem, dass ich die Pause nicht mit den 2 neuen Buttons einstellen kann.

    Ich blicke da selber gerade nicht durch.

    Falls jemand sagt: Das Einstellungsmenü kann man sauber lösen lerne ich gerne dazu.

    Code
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=prog.ico
    #AutoIt3Wrapper_Outfile=Spielzeit-Timer.exe
    #AutoIt3Wrapper_Res_Description=Spielzeit-Timer
    #AutoIt3Wrapper_Res_Fileversion=1.0.0.0
    #AutoIt3Wrapper_Res_LegalCopyright=Oscar (www.autoit.de)/geändert SCCSSF
    #AutoIt3Wrapper_Res_Language=1031
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    
    #Region Includes
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <Sound.au3>
    #include <StaticConstants.au3>
    #include <Timers.au3>
    #include <WinAPI.au3>
    #include <WinAPIGdi.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>
    #include <Misc.au3>
    #Include <GuiButton.au3>
    #include <EditConstants.au3>
    #include '_ProgressEx.au3'
    #include '_DateiEx.au3'
    #EndRegion Includes
    
    
    #Region single
    If _Singleton("Timer", 1) = 0 Then
        Exit
    EndIf
    #EndRegion
    
    #Region Optionen
    ;#NoTrayIcon
    Opt('MustDeclareVars', 1)
    Opt('TrayMenuMode', 1)
    Opt('GUIOnEventMode', 1)
    Opt('TrayOnEventMode', 1)
    #EndRegion Optionen
    
    _GDIPlus_Startup()
    
    #Region Konstanten deklarieren
    Global Const $sAppTitle = 'Spielzeit-Timer'
    Global Const $sAppVersion = '0.2.3.7'
    Global Const $sAppDate = '25.02.2019'
    Global Const $sAppAuthor = 'Oscar (www.autoit.de) / SCCCSF'
    Global Const $sAppDir = @AppDataDir & '\SP-Timer\'
    If Not FileExists($sAppDir) Then DirCreate($sAppDir)
    Global Const $sInifile = $sAppDir & 'Spielzeit-Timer.ini'
    Global $b7SegmentFont = _Segment7new()
    Global $t7SegmentFont = DllStructCreate('byte[' & BinaryLen($b7SegmentFont) & ']')
    DllStructSetData($t7SegmentFont, 1, $b7SegmentFont)
    Global $h7SegmentFont = _WinAPI_AddFontMemResourceEx(DllStructGetPtr($t7SegmentFont), DllStructGetSize($t7SegmentFont))
    Global $hUpBitmap = _GDIPlus_BitmapCreateFromMemory(_uppng())
    Global $hDownBitmap = _GDIPlus_BitmapCreateFromMemory(_downpng())
    Global $sSoundfile = @TempDir & '\glocke.mp3'
    If Not FileExists($sSoundfile) Then _glocke(True, @TempDir)
    Global $aSound = _SoundOpen($sSoundfile)
    
    Global Const $iAppDPI = RegRead('HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics', 'AppliedDPI')
    Global Const $iRed = 0, $iYellow = 60, $iGreen = 120, $iBlue = -150 ; Farbwerte/HUE gegenueber dem roten Standardwert (Werte von -180 bis +180 sind moeglich)
    Global Const $iWidth = 240, $iHeight = 360
    #EndRegion Konstanten deklarieren
    
    #Region globale Variablen
    Global $iTimerSeconds = IniRead($sInifile, 'Config', 'TimerSeconds', 600)
    Global $iTimerStep = IniRead($sInifile, 'Config', 'TimerStep', 10) ; In der Inidatei kann man die Schrittweite (in Sekunden) fuer die Timereinstellung festlegen
    Global $iTimerDiv = IniRead($sInifile, 'Config', 'TimerDiv', 1) ; In der Inidatei kann man die Schrittweite (in Menuten) fuer die letzte Minute festelegen
    Global $iTimerPause = IniRead($sInifile, 'Config', 'TimerPause', 300) ; In der Inidatei kann man die Schrittweite (in Sekunden) fuer die Pause festlegen
    Global $bTimerOn = False, $iSeconds = $iTimerSeconds
    #EndRegion globale Variablen
    
    #Region Fenster erstellen
    Global $hGui = GUICreate(StringFormat('%s  v%-3.3s', $sAppTitle, $sAppVersion), $iWidth, $iHeight, -1, -1, -1)
    GUISetOnEvent($GUI_EVENT_CLOSE, _Minimize)
    GUISetOnEvent($GUI_EVENT_MINIMIZE,  _Minimize)
    TraySetOnEvent(-7, "_Restore")
    GUISetBkColor(0x000000)
    GUISetIcon(@ScriptDir & '\stopwatch.ico', 0, $hGui)
    
    Global $Setting_Menu = GUICtrlCreateMenu("Menü")
    Global $Setting_Para = GUICtrlCreateMenuItem("Einstellungen", $Setting_Menu)
    GUICtrlSetOnEvent(-1, "_Settings")
    Global $Setting_exit = GUICtrlCreateMenuItem("Ende", $Setting_Menu)
    GUICtrlSetOnEvent(-1, "_Exit")
    Global $helpmenu = GUICtrlCreateMenu("?")
    Global $Info = GUICtrlCreateMenuItem("Version", $helpmenu)
    GUICtrlSetOnEvent(-1, "_showInfo")
    
    Global $idTime = GUICtrlCreateLabel(StringFormat('%02d:%02d', Int($iTimerSeconds / 60), Mod($iTimerSeconds, 60)), 20, 12, $iWidth - 60, 44, $SS_CENTER)
    GUICtrlSetColor(-1, 0x22FF22)
    GUICtrlSetFont(-1, 40 / $iAppDPI * 80, 400, 0, 'Segment7')
    Global $hGUi1 = GUICtrlCreateLabel("Spielzeit", 30, 80, 172, 33,$SS_CENTER)
    GUICtrlSetColor(-1, 0xFEFF22)
    GUICtrlSetFont(-1, 20)
    
    Global $idTime1 = GUICtrlCreateLabel(StringFormat('%02d:%02d', Int(($iTimerSeconds- $iTimerDiv*60) /60  ), Mod($iTimerSeconds, 60)), 20, 120, $iWidth - 60, 44, $SS_CENTER)
    GUICtrlSetColor(-1, 0x22FF22)
    GUICtrlSetFont(-1, 40 / $iAppDPI * 80, 400, 0, 'Segment7')
    Global $hGUi2 = GUICtrlCreateLabel("letzte Minute", 30, 158, 172, 33,$SS_CENTER)
    GUICtrlSetColor(-1, 0xFEFF22)
    GUICtrlSetFont(-1, 20)
    
    Global $idTime2 = GUICtrlCreateLabel(StringFormat('%02d:%02d', Int($iTimerPause / 60), Mod($iTimerPause, 60)), 20, 200, $iWidth - 60, 44, $SS_CENTER)
    GUICtrlSetColor(-1, 0x22FF22)
    GUICtrlSetFont(-1, 40 / $iAppDPI * 80, 400, 0, 'Segment7')
    Global $hGUi3 = GUICtrlCreateLabel("Pause", 30, 268, 172, 33,$SS_CENTER)
    GUICtrlSetColor(-1, 0xFEFF22)
    GUICtrlSetFont(-1, 20)
    
    
    Global $idUp = GUICtrlCreatePic('', $iWidth - 34, 6, 24, 24)
    GUICtrlSetOnEvent(-1, '_ChangeTimerSeconds')
    Global $hBMP = _GDIPlus_BitmapCreateDIBFromBitmap($hUpBitmap)
    _WinAPI_DeleteObject(GUICtrlSendMsg($idUp, $STM_SETIMAGE, $IMAGE_BITMAP, $hBMP))
    _WinAPI_DeleteObject($hBMP)
    
    Global $idDown = GUICtrlCreatePic('', $iWidth - 34, 34, 24, 24)
    GUICtrlSetOnEvent(-1, '_ChangeTimerSeconds')
    Global $hBMP = _GDIPlus_BitmapCreateDIBFromBitmap($hDownBitmap)
    _WinAPI_DeleteObject(GUICtrlSendMsg($idDown, $STM_SETIMAGE, $IMAGE_BITMAP, $hBMP))
    _WinAPI_DeleteObject($hBMP)
    
    Global $idUpP = GUICtrlCreatePic('', $iWidth - 34, 197, 24, 24)
    GUICtrlSetOnEvent(-1, '_ChangeTimerPauseSeconds')
    Global $hBMP = _GDIPlus_BitmapCreateDIBFromBitmap($hUpBitmap)
    _WinAPI_DeleteObject(GUICtrlSendMsg($idUpP, $STM_SETIMAGE, $IMAGE_BITMAP, $hBMP))
    _WinAPI_DeleteObject($hBMP)
    
    Global $idDownP = GUICtrlCreatePic('', $iWidth - 34, 225, 24, 24)
    GUICtrlSetOnEvent(-1, '_ChangeTimerPauseSeconds')
    Global $hBMP = _GDIPlus_BitmapCreateDIBFromBitmap($hDownBitmap)
    _WinAPI_DeleteObject(GUICtrlSendMsg($idDownP, $STM_SETIMAGE, $IMAGE_BITMAP, $hBMP))
    _WinAPI_DeleteObject($hBMP)
    
    Global $aProgress1 = _ProgressEx_Create(10, 60, $iWidth - 20, 15, $PE_NOTEXT)
    _ProgressEx_SetData($aProgress1, 100, $iGreen)
    
    Global $aProgress2 = _ProgressEx_Create(10, 250, $iWidth - 20, 15, $PE_NOTEXT)
    _ProgressEx_SetData($aProgress2, 100, -0)
    
    Global $idReset = GUICtrlCreateButton('Reset', 10, 310, 50, 25)
    GUICtrlSetFont(-1, 12 / $iAppDPI * 96, 600, 0, 'Tahoma')
    GUICtrlSetOnEvent(-1, '_ResetTimer')
    
    Global $idStop = GUICtrlCreateButton('Stop', 65, 310, 50, 25)
    GUICtrlSetFont(-1, 12 / $iAppDPI * 96, 600, 0, 'Tahoma')
    GUICtrlSetOnEvent(-1, '_StopTimer')
    GUICtrlSetState($idStop, $GUI_DISABLE)
    
    Global $idStart = GUICtrlCreateButton('Start', $iWidth - 120, 310, 110, 25, $BS_DEFPUSHBUTTON)
    GUICtrlSetFont(-1, 12 / $iAppDPI * 96, 600, 0, 'Tahoma')
    GUICtrlSetOnEvent(-1, '_StartTimer')
    #EndRegion Fenster erstellen
    
    #Region Fenster anzeigen und auf das Schliessen warten (der Rest ist funktionsgesteuert)
    Global $aAccelKeys[2][2] = [['{UP}', $idUp], ['{DOWN}', $idDown]]
    GUISetAccelerators($aAccelKeys)
    GUISetState(@SW_SHOW)
    ;GUIRegisterMsg($WM_MOUSEWHEEL, '_WM_MOUSEWHEEL')
    _Timer_SetTimer($hGui, 1000, '_ChangeTimer')
    WinWaitClose($hGui)
    Exit
    #EndRegion Fenster anzeigen und auf das Schliessen warten (der Rest ist funktionsgesteuert)
    
    #Region Funktionen
    Func _CloseMainGui()
        _Timer_KillAllTimers($hGui)
        _WinAPI_RemoveFontMemResourceEx($h7SegmentFont)
        $t7SegmentFont = 0
        _GDIPlus_BitmapDispose($hUpBitmap)
        _GDIPlus_BitmapDispose($hDownBitmap)
        _GDIPlus_Shutdown()
        _SoundClose($aSound)
        GUIDelete($hGui)
    EndFunc   ;==>_CloseMainGui
    
    Func _ChangeTimer($hWnd, $iMsg, $iIDTimer, $iTime, $idTime1, $idTime2)
        If Not $bTimerOn Then Return
        $iSeconds -= 1
            GUICtrlSetData($idTime, StringFormat('%02d:%02d', Int($iSeconds / 60), Mod($iSeconds, 60)))
    
        If (($iSeconds -$iTimerDiv*60) /60) > 0 Then
            GUICtrlSetData($idTime1, StringFormat('%02d:%02d', Int(($iSeconds- $iTimerDiv*60) / 60), Mod($iSeconds, 60)))
        Else
            GUICtrlSetData($idTime1, '00:00')
        EndIf
    
        _ProgressEx_SetData($aProgress1, 100 / $iTimerSeconds * $iSeconds, $iGreen)
        If (($iSeconds -$iTimerDiv*60) /60) = 0 Then
            _SoundPlay($aSound)
        EndIf
        If $iSeconds = 0 Then
            $bTimerOn = False
            _SoundPlay($aSound)
            #MsgBox($MB_OK + $MB_ICONINFORMATION, $sAppTitle, 'Die eingestellte Zeit ist abgelaufen.', 0, $hGui)
            #_ResetTimer()
        EndIf
    EndFunc   ;==>_ChangeTimer
    
    Func _ChangeTimerPause($hWnd, $iMsg, $iIDTimer, $iTime, $idTime1, $idTime2)
        If Not $bTimerOnPause Then Return
        $iSecondsPause -= 1
            GUICtrlSetData($idTimePause, StringFormat('%02d:%02d', Int($iTimerPause / 60), Mod($iTimerPause, 60)))
    
        If (($iSecondsPause -$iTimerDiv*60) /60) > 0 Then
        GUICtrlSetData($idTime2, StringFormat('%02d:%02d', Int($iTimerPause / 60), Mod($iTimerPause, 60)))
        Else
            GUICtrlSetData($idTime2, '00:00')
        EndIf
    
        
        _ProgressEx_SetData($aProgress2, 100 / $iTimerSeconds * $iTimerPause, $iGreen)
        If (($iTimerPause -$iTimerDiv*60) /60) = 0 Then
            _SoundPlay($aSound)
        EndIf
        If $iTimerPause = 0 Then
            $bTimerOn = False
            _SoundPlay($aSound)
            #MsgBox($MB_OK + $MB_ICONINFORMATION, $sAppTitle, 'Die eingestellte Zeit ist abgelaufen.', 0, $hGui)
            #_ResetTimer()
        EndIf
    EndFunc   ;==>_ChangeTimerPause
    
    ;~ Func _WM_MOUSEWHEEL($hWnd, $iMsg, $wParam, $lParam)
    ;~     Local $iWheel = _WinAPI_HiWord($wParam) / 120 ; down = -1, up = 1
    ;~     Local $aGuiInfo = GUIGetCursorInfo($hGui)
    ;~     Switch $aGuiInfo[4]
    ;~         Case $idTime
    ;~             If $bTimerOn Then Return
    ;~             $iTimerSeconds += $iWheel * $iTimerStep
    ;~             If $iTimerSeconds < $iTimerStep Then $iTimerSeconds = 6000 - $iTimerStep
    ;~             If $iTimerSeconds > 6000 - $iTimerStep Then $iTimerSeconds = $iTimerStep
    ;~             $iSeconds = $iTimerSeconds
    ;~             GUICtrlSetData($idTime, StringFormat('%02d:%02d', Int($iSeconds / 60), Mod($iSeconds, 60)))
    ;~             Return
    ;~         Case Else
    ;~             Return $GUI_RUNDEFMSG
    ;~     EndSwitch
    ;~     Return $GUI_RUNDEFMSG
    ;~ EndFunc   ;==>_WM_MOUSEWHEEL
    
    Func _ChangeTimerSeconds()
        If $bTimerOn Then Return
        $iTimerSeconds += (@GUI_CtrlId = $idUp ? 1 : -1) * $iTimerStep
        If $iTimerSeconds < $iTimerStep Then $iTimerSeconds = 6000 - $iTimerStep
        If $iTimerSeconds > 6000 - $iTimerStep Then $iTimerSeconds = $iTimerStep
        $iSeconds = $iTimerSeconds
        GUICtrlSetData($idTime, StringFormat('%02d:%02d', Int($iSeconds / 60), Mod($iSeconds, 60)))
        GUICtrlSetData($idTime1, StringFormat('%02d:%02d', Int(($iSeconds- $iTimerDiv*60) / 60), Mod($iSeconds, 60)))
        
    EndFunc   ;==>_ChangeTimerSeconds
    
    Func _ChangeTimerSecondsPause()
        If $bTimerOn Then Return
        $iTimerSeconds += (@GUI_CtrlId = $idUpP ? 1 : -1) * $iTimerStep
        If $iTimerSeconds < $iTimerStep Then $iTimerSeconds = 6000 - $iTimerStep
        If $iTimerSeconds > 6000 - $iTimerStep Then $iTimerSeconds = $iTimerStep
        $iSeconds = $iTimerSeconds
        GUICtrlSetData($idTime2, StringFormat('%02d:%02d', Int($iSeconds / 60), Mod($iSeconds, 60)))
    
    EndFunc   ;==>_Ch
    Func _ResetTimer()
        $iSeconds = $iTimerSeconds
        GUICtrlSetData($idTime, StringFormat('%02d:%02d', Int($iSeconds / 60), Mod($iSeconds, 60)))
        GUICtrlSetData($idTime1, StringFormat('%02d:%02d', Int(($iSeconds- $iTimerDiv*60) / 60 ), Mod($iSeconds, 60)))
        GUICtrlSetData($idTime2, StringFormat('%02d:%02d', Int($iSeconds / 60), Mod($iSeconds, 60)))
    
        $bTimerOn = False
        GUICtrlSetState($idStart, $GUI_ENABLE)
        GUICtrlSetState($idStop, $GUI_DISABLE)
        
        _ProgressEx_SetData($aProgress1, 100, $iGreen)
    EndFunc   ;==>_ResetTimer
    
    Func _StopTimer()
            $bTimerOn = False
        GUICtrlSetState($idStart, $GUI_ENABLE)
        GUICtrlSetState($idStop, $GUI_DISABLE)
        GUICtrlSetState($idReset, $GUI_ENABLE)
        GUICtrlSetState($Setting_Para, $GUI_ENABLE)
        
    EndFunc   ;==>_StopTimer
    
    Func _StartTimer()
        $bTimerOn = True
        GUICtrlSetState($idStart, $GUI_DISABLE)
        GUICtrlSetState($idReset, $GUI_DISABLE)
        GUICtrlSetState($Setting_Para, $GUI_DISABLE)
        GUICtrlSetState($idStop, $GUI_ENABLE)
    EndFunc   ;==>_StartTimer
    
    Func _IniWrite()
        IniWrite($sInifile, 'Config', 'TimerSeconds', $iTimerSeconds)
        IniWrite($sInifile, 'Config', 'TimerStep', $iTimerStep)
        IniWrite($sInifile, 'Config', 'TimerDiv', $iTimerDiv)
    EndFunc    ;==>_IniWrite
    #EndRegion Funktionen
    
    #Region Setting Menue
    Func _settings()
        GuiSETState(@SW_HIDE, $hGui)
    
        Global $sound1 = IniRead($sInifile, 'Sound', 'Spielanfang', "")
        Global $sound2 = IniRead($sInifile, 'Sound', 'Spielende', "")
        Global $sound3 = IniRead($sInifile, 'Sound', 'Pause', "")
        Global $idTime1E = IniRead($sInifile, 'Config', 'TimerSeconds', "600")
        Global $idTime2E = IniRead($sInifile, 'Config', 'TimerPause', "300") ; In der Inidatei kann man die Schrittweite (in Sekunden) fuer die Pausenzeit festlegen
         Global $idTime3E = IniRead($sInifile, 'Config', 'TimerStep', "10") ; In der Inidatei kann man die Schrittweite (in Sekunden) fuer die Timereinstellung festlegen
        
        Global $SettingGui = GUICreate(StringFormat('%s  v%-3.3s', "Einstellungen", $sAppVersion), 450, 360, -1, -1, -1)    
        ;==>_Sound 1
        Global $Label1 = GUICtrlCreateLabel("Sound-Spielanfang", 8, 15, 150)
            GUICtrlSetFont(-1, 10, 800, 0, "@Arial Unicode MS")
        Global $Liste1speichern = GUICtrlCreateInput($Sound1, 8, 40, 350, 21)
        Global $Datein1 = GUICtrlCreateButton("...", 370, 40, 25, 21)
        GUICtrlSetOnEvent(-1, "_settings_d1")
        
        ;==>_Sound 2
        Global $Label2 = GUICtrlCreateLabel("Sound-Spielende", 8, 70, 150)
            GUICtrlSetFont(-1, 10, 800, 0, "@Arial Unicode MS")
        Global $Liste2speichern = GUICtrlCreateInput($Sound2, 8, 95, 350, 21)
        Global $Datein2 = GUICtrlCreateButton("...", 370, 95, 25, 21)
        GUICtrlSetOnEvent(-1, "_settings_d2")
        
        ;==>_Sound 3
        Global $Label3 = GUICtrlCreateLabel("Sound-Pause", 8, 125, 150)
            GUICtrlSetFont(-1, 10, 800, 0, "@Arial Unicode MS")
        Global $Liste3speichern = GUICtrlCreateInput($Sound3, 8, 150, 350, 21)
        Global $Datein3 = GUICtrlCreateButton("...", 370, 150, 25, 21)
        GUICtrlSetOnEvent(-1, "_settings_d3")
        
        ;==>_Spielzeit (Voreinstellung)
        Global $Label4 = GUICtrlCreateLabel("Spielzeit", 8, 180, 150)
            GUICtrlSetFont(-1, 10, 800, 0, "@Arial Unicode MS")
        Global $Liste4speichern =  GUICtrlCreateInput($idTime1E,8,205,53,21,BitOr($ES_CENTER,$ES_NUMBER),$WS_EX_CLIENTEDGE)
            GUICtrlCreateLabel("in Sekunden",86,205,100,15,-1,-1)
                GUICtrlSetFont(-1, 10, 800, 0, "@Arial Unicode MS")
        GUICtrlSetOnEvent(-1, "_settings_d3")
        
        ;==>_Pausenzeit (Voreinstellung)
        Global $Label5 = GUICtrlCreateLabel("Pausenzeit", 8, 230, 150)
            GUICtrlSetFont(-1, 10, 800, 0, "@Arial Unicode MS")
        Global $Liste5speichern =  GUICtrlCreateInput($idTime2E,8,255,53,21,BitOr($ES_CENTER,$ES_NUMBER),$WS_EX_CLIENTEDGE)
            GUICtrlCreateLabel("in Sekunden",86,255,100,15,-1,-1)
                GUICtrlSetFont(-1, 10, 800, 0, "@Arial Unicode MS")
        GUICtrlSetOnEvent(-1, "_settings_d3")
        
        ;==>Verstellung (Voreinstellung)
        Global $Label6 = GUICtrlCreateLabel("Verstellung", 8, 280, 150)
            GUICtrlSetFont(-1, 10, 800, 0, "@Arial Unicode MS")
        Global $Liste6speichern =  GUICtrlCreateInput($idTime3E,8,305,53,21,BitOr($ES_CENTER,$ES_NUMBER),$WS_EX_CLIENTEDGE)
            GUICtrlCreateLabel("in Sekunden",86,305,100,15,-1,-1)
                GUICtrlSetFont(-1, 10, 800, 0, "@Arial Unicode MS")
        GUICtrlSetOnEvent(-1, "_settings_d3")
        
        ;==>_Speichern/Abbrechen
        Global $Speichern1 = GUICtrlCreateButton("Speichern", 250, 310, 65, 25)
        GUICtrlSetOnEvent(-1, "_settings_save")
        Global $Abbrechen = GUICtrlCreateButton("Abbrechen", 330, 310, 65, 25)
        GUICtrlSetOnEvent(-1, "_settings_end")
        GUISetState(@SW_SHOW)
        GUISetOnEvent($GUI_EVENT_CLOSE, '_settings_end')
        
    EndFunc   ;==>_settings
    
    Func _settings_d1()
        global $Datei_d1 = FileOpenDialog("Bitte Sound Wählen", "c:\", "Sound (*.mp3)", 1 + 2) ;=>Datei auswählen
        GUICtrlSetData($Liste1speichern, $Datei_d1) ;=> Datei Anzeigen
    EndFunc   ;==>_settings_d1
    
    Func _settings_d2()
        global $Datei_d2 = FileOpenDialog("Bitte Sound Wählen", "c:\", "Sound (*.mp3)", 1 + 2) ;=>Datei auswählen
        GUICtrlSetData($Liste2speichern, $Datei_d2) ;=> Datei Anzeigen
    EndFunc   ;==>_settings_d2
    
    Func _settings_d3()
        global $Datei_d3 = FileOpenDialog("Bitte Sound Wählen", "c:\", "Sound (*.mp3)", 1 + 2) ;=>Datei auswählen
        GUICtrlSetData($Liste3speichern, $Datei_d3) ;=> Datei Anzeigen
    EndFunc   ;==>_settings_d3
    
    Func _settings_end()
        GUIDelete($SettingGui)
        GUISetState(@SW_SHOW, $hGui)
    EndFunc   ;==>_settings_end
    
    Func _settings_save()
        IniWrite($sInifile, 'Sound', 'Spielanfang',GUICtrlRead($Liste1speichern))
        IniWrite($sInifile, 'Sound', 'Spielende',GUICtrlRead($Liste2speichern))
        IniWrite($sInifile, 'Sound', 'Pause',GUICtrlRead($Liste3speichern))
        IniWrite($sInifile, 'Config', 'TimerSeconds',GUICtrlRead($Liste4speichern))
        IniWrite($sInifile, 'Config', 'TimerPause',GUICtrlRead($Liste5speichern))
        IniWrite($sInifile, 'Config', 'TimerStep',GUICtrlRead($Liste6speichern))
        
        Global $sound1 = IniRead($sInifile, 'Sound', 'Spielanfang', "")
        Global $sound2 = IniRead($sInifile, 'Sound', 'Spielende', "")
        Global $sound3 = IniRead($sInifile, 'Sound', 'Pause', "")
        Global $iTimerSeconds = IniRead($sInifile, 'Config', 'TimerSeconds', "")
        Global $iTimerPause= IniRead($sInifile, 'Config', 'TimerPause', "")
        Global $iTimerStep = IniRead($sInifile, 'Config', 'TimerStep', "")
        
        GUIDelete($SettingGui)
        GUISetState(@SW_SHOWnormal, $hGui)
        _ResetTimer()
    EndFunc   ;==>_settings_save
    #EndRegion setting menue
    
    #Region Menue
    Func _Showinfo()
        MsgBox(0, "Info", "Version "& $sAppVersion & @CRLF & $sAppDate  & @CRLF & $sAppAuthor)
    EndFunc   ;==>_Showinfo
    
    Func _Exit()
        _CloseMainGui()
    EndFunc   ;==>_Exit
    
    Func _Minimize()
        TraySetState(4)
        GUISetState(@SW_HIDE)
    EndFunc   ;==>_Minimize
    
    Func _Restore()
        TraySetState(8)
        GUISetState(@SW_SHOW)
    EndFunc   ;==>_Restore
    #EndRegion menue
    Alles anzeigen
  • Turnier Timer

    • sccssf
    • 21. Februar 2019 um 13:02
    Zitat von alpines

    Du hast vergessen Opt("TrayOnEventMode", 1) zu verwenden, stattdessen hast du 2x GUIOnEventMode.

    Danke

  • Turnier Timer

    • sccssf
    • 21. Februar 2019 um 11:30

    Hallo,

    Irgendwie geht meine Restore Funktion nicht.

    Das Icon geht in den Tray.
    Allerdings bekomme ich es nicht mehr geöffnet.

    Schließen und öffnen habe ich hier rein geschrieben.

    Funktionsbereich

    Code
    GUISetOnEvent($GUI_EVENT_CLOSE, _Minimize)
    GUISetOnEvent($GUI_EVENT_MINIMIZE,  _Minimize)
    TraySetOnEvent(-7, "_Restore")

    Funktion

    Code
    Func _Restore()
        TraySetState(4)
        GUISetState(@SW_SHOWDEFAULT)
    EndFunc   ;==>_Restore
    #EndRegion menue

    Gesamtcode

    Code
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=prog.ico
    #AutoIt3Wrapper_Outfile=Spielzeit-Timer.exe
    #AutoIt3Wrapper_Res_Description=Spielzeit-Timer
    #AutoIt3Wrapper_Res_Fileversion=1.0.0.0
    #AutoIt3Wrapper_Res_LegalCopyright=Oscar (www.autoit.de)/geändert SCCSSF
    #AutoIt3Wrapper_Res_Language=1031
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    
    #Region Includes
    #include <buttonconstants.au3>
    #include <guiconstantsex.au3>
    #include <sound.au3>
    #include <staticconstants.au3>
    #include <timers.au3>
    #include <winapi.au3>
    #include <winapigdi.au3>
    #include <windowsconstants.au3>
    #include <file.au3>
    #include <misc.au3>
    #include '_ProgressEx.au3'
    #include '_DateiEx.au3'
    #EndRegion Includes
    
    #Region single
    If _Singleton("Timer", 1) = 0 Then
        Exit
    EndIf
    #EndRegion
    
    #Region Optionen
    ;#NoTrayIcon
    Opt('MustDeclareVars', 1)
    Opt('GUIOnEventMode', 1)
    Opt('TrayMenuMode', 1)
    Opt('GUIOnEventMode', 1)
    #EndRegion Optionen
    
    _GDIPlus_Startup()
    
    #Region Konstanten deklarieren
    Global Const $sAppTitle = 'Spielzeit-Timer'
    Global Const $sAppVersion = '1.0.0.0'
    Global Const $sAppDate = '20.02.2019'
    Global Const $sAppAuthor = 'Oscar (www.autoit.de) / SCCCSF'
    Global Const $sAppDir = @AppDataDir & '\TeaTimer\'
    If Not FileExists($sAppDir) Then DirCreate($sAppDir)
    Global Const $sInifile = $sAppDir & 'TeaTimer.ini'
    Global $b7SegmentFont = _Segment7new()
    Global $t7SegmentFont = DllStructCreate('byte[' & BinaryLen($b7SegmentFont) & ']')
    DllStructSetData($t7SegmentFont, 1, $b7SegmentFont)
    Global $h7SegmentFont = _WinAPI_AddFontMemResourceEx(DllStructGetPtr($t7SegmentFont), DllStructGetSize($t7SegmentFont))
    Global $hUpBitmap = _GDIPlus_BitmapCreateFromMemory(_uppng())
    Global $hDownBitmap = _GDIPlus_BitmapCreateFromMemory(_downpng())
    Global $sSoundfile = @TempDir & '\glocke.mp3'
    If Not FileExists($sSoundfile) Then _glocke(True, @TempDir)
    Global $aSound = _SoundOpen($sSoundfile)
    
    Global Const $iAppDPI = RegRead('HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics', 'AppliedDPI')
    Global Const $iRed = 0, $iYellow = 60, $iGreen = 120, $iBlue = -150 ; Farbwerte/HUE gegenueber dem roten Standardwert (Werte von -180 bis +180 sind moeglich)
    Global Const $iWidth = 240, $iHeight = 360
    #EndRegion Konstanten deklarieren
    
    #Region globale Variablen
    Global $iTimerSeconds = IniRead($sInifile, 'Config', 'TimerSeconds', 600)
    Global $iTimerStep = IniRead($sInifile, 'Config', 'TimerStep', 10) ; In der Inidatei kann man die Schrittweite (in Sekunden) fuer die Timereinstellung festlegen
    Global $iTimerDiv = IniRead($sInifile, 'Config', 'TimerDiv', 5) ; In der Inidatei kann man die Schrittweite (in Sekunden) fuer die Timerdiverens festlegen
    Global $bTimerOn = False, $iSeconds = $iTimerSeconds
    #EndRegion globale Variablen
    
    #Region Fenster erstellen
    Global $hGui = GUICreate(StringFormat('%s  v%-3.3s', $sAppTitle, $sAppVersion), $iWidth, $iHeight, -1, -1, -1)
    GUISetOnEvent($GUI_EVENT_CLOSE, _Minimize)
    GUISetOnEvent($GUI_EVENT_MINIMIZE,  _Minimize)
    TraySetOnEvent(-7, "_Restore")
    GUISetBkColor(0x000000)
    GUISetIcon(@ScriptDir & '\stopwatch.ico', 0, $hGui)
    
    Global $Setting_Menu = GUICtrlCreateMenu("Menü")
    Global $Setting_Para = GUICtrlCreateMenuItem("Einstellungen", $Setting_Menu)
    Global $Setting_exit = GUICtrlCreateMenuItem("Ende", $Setting_Menu)
    GUICtrlSetOnEvent(-1, "_Exit")
    Global $helpmenu = GUICtrlCreateMenu("?")
    Global $Info = GUICtrlCreateMenuItem("Version", $helpmenu)
    GUICtrlSetOnEvent(-1, "_showInfo")
    
    Global $idTime = GUICtrlCreateLabel(StringFormat('%02d:%02d', Int($iTimerSeconds / 60), Mod($iTimerSeconds, 60)), 20, 12, $iWidth - 60, 44, $SS_CENTER)
    GUICtrlSetColor(-1, 0x22FF22)
    GUICtrlSetFont(-1, 40 / $iAppDPI * 80, 400, 0, 'Segment7')
    Global $hGUi1 = GUICtrlCreateLabel("Spielzeit", 30, 80, 172, 33,$SS_CENTER)
    GUICtrlSetColor(-1, 0xFEFF22)
    GUICtrlSetFont(-1, 20)
    
    Global $idTime1 = GUICtrlCreateLabel(StringFormat('%02d:%02d', Int(($iTimerSeconds- $iTimerDiv*60) /60  ), Mod($iTimerSeconds, 60)), 20, 120, $iWidth - 60, 44, $SS_CENTER)
    GUICtrlSetColor(-1, 0x22FF22)
    GUICtrlSetFont(-1, 40 / $iAppDPI * 80, 400, 0, 'Segment7')
    Global $hGUi2 = GUICtrlCreateLabel("letzte Minute", 30, 158, 172, 33,$SS_CENTER)
    GUICtrlSetColor(-1, 0xFEFF22)
    GUICtrlSetFont(-1, 20)
    
    Global $idTime2 = GUICtrlCreateLabel(StringFormat('%02d:%02d', Int($iTimerSeconds / 60), Mod($iTimerSeconds, 60)), 20, 200, $iWidth - 60, 44, $SS_CENTER)
    GUICtrlSetColor(-1, 0x22FF22)
    GUICtrlSetFont(-1, 40 / $iAppDPI * 80, 400, 0, 'Segment7')
    Global $hGUi3 = GUICtrlCreateLabel("Pause", 30, 268, 172, 33,$SS_CENTER)
    GUICtrlSetColor(-1, 0xFEFF22)
    GUICtrlSetFont(-1, 20)
    
    
    Global $idUp = GUICtrlCreatePic('', $iWidth - 34, 6, 24, 24)
    GUICtrlSetOnEvent(-1, '_ChangeTimerSeconds')
    Global $hBMP = _GDIPlus_BitmapCreateDIBFromBitmap($hUpBitmap)
    _WinAPI_DeleteObject(GUICtrlSendMsg($idUp, $STM_SETIMAGE, $IMAGE_BITMAP, $hBMP))
    _WinAPI_DeleteObject($hBMP)
    
    Global $idDown = GUICtrlCreatePic('', $iWidth - 34, 34, 24, 24)
    GUICtrlSetOnEvent(-1, '_ChangeTimerSeconds')
    Global $hBMP = _GDIPlus_BitmapCreateDIBFromBitmap($hDownBitmap)
    _WinAPI_DeleteObject(GUICtrlSendMsg($idDown, $STM_SETIMAGE, $IMAGE_BITMAP, $hBMP))
    _WinAPI_DeleteObject($hBMP)
    
    Global $idUpP = GUICtrlCreatePic('', $iWidth - 34, 197, 24, 24)
    GUICtrlSetOnEvent(-1, '_ChangeTimerPauseSeconds')
    Global $hBMP = _GDIPlus_BitmapCreateDIBFromBitmap($hUpBitmap)
    _WinAPI_DeleteObject(GUICtrlSendMsg($idUpP, $STM_SETIMAGE, $IMAGE_BITMAP, $hBMP))
    _WinAPI_DeleteObject($hBMP)
    
    Global $idDownP = GUICtrlCreatePic('', $iWidth - 34, 225, 24, 24)
    GUICtrlSetOnEvent(-1, '_ChangeTimerPauseSeconds')
    Global $hBMP = _GDIPlus_BitmapCreateDIBFromBitmap($hDownBitmap)
    _WinAPI_DeleteObject(GUICtrlSendMsg($idDownP, $STM_SETIMAGE, $IMAGE_BITMAP, $hBMP))
    _WinAPI_DeleteObject($hBMP)
    
    Global $aProgress1 = _ProgressEx_Create(10, 60, $iWidth - 20, 15, $PE_NOTEXT)
    _ProgressEx_SetData($aProgress1, 100, $iGreen)
    
    Global $aProgress2 = _ProgressEx_Create(10, 250, $iWidth - 20, 15, $PE_NOTEXT)
    _ProgressEx_SetData($aProgress2, 100, -0)
    
    Global $idStart = GUICtrlCreateButton('Reset', 10, 310, 50, 25)
    GUICtrlSetFont(-1, 12 / $iAppDPI * 96, 600, 0, 'Tahoma')
    GUICtrlSetOnEvent(-1, '_ResetTimer')
    
    Global $idStop = GUICtrlCreateButton('Stop', 65, 310, 50, 25)
    GUICtrlSetFont(-1, 12 / $iAppDPI * 96, 600, 0, 'Tahoma')
    GUICtrlSetOnEvent(-1, '_StopTimer')
    GUICtrlSetState($idStop, $GUI_DISABLE)
    
    Global $idStart = GUICtrlCreateButton('Start', $iWidth - 120, 310, 110, 25, $BS_DEFPUSHBUTTON)
    GUICtrlSetFont(-1, 12 / $iAppDPI * 96, 600, 0, 'Tahoma')
    GUICtrlSetOnEvent(-1, '_StartTimer')
    #EndRegion Fenster erstellen
    
    #Region Fenster anzeigen und auf das Schliessen warten (der Rest ist funktionsgesteuert)
    Global $aAccelKeys[2][2] = [['{UP}', $idUp], ['{DOWN}', $idDown]]
    GUISetAccelerators($aAccelKeys)
    GUISetState(@SW_SHOW)
    GUIRegisterMsg($WM_MOUSEWHEEL, '_WM_MOUSEWHEEL')
    _Timer_SetTimer($hGui, 1000, '_ChangeTimer')
    WinWaitClose($hGui)
    Exit
    #EndRegion Fenster anzeigen und auf das Schliessen warten (der Rest ist funktionsgesteuert)
    
    #Region Funktionen
    Func _CloseMainGui()
        _Timer_KillAllTimers($hGui)
        _WinAPI_RemoveFontMemResourceEx($h7SegmentFont)
        $t7SegmentFont = 0
        _GDIPlus_BitmapDispose($hUpBitmap)
        _GDIPlus_BitmapDispose($hDownBitmap)
        _GDIPlus_Shutdown()
        _SoundClose($aSound)
        IniWrite($sInifile, 'Config', 'TimerSeconds', $iTimerSeconds)
        IniWrite($sInifile, 'Config', 'TimerStep', $iTimerStep)
        IniWrite($sInifile, 'Config', 'TimerDiv', $iTimerDiv)
        GUIDelete($hGui)
    EndFunc   ;==>_CloseMainGui
    
    Func _ChangeTimer($hWnd, $iMsg, $iIDTimer, $iTime, $idTime1, $idTime2)
        If Not $bTimerOn Then Return
        $iSeconds -= 1
            GUICtrlSetData($idTime, StringFormat('%02d:%02d', Int($iSeconds / 60), Mod($iSeconds, 60)))
    
        If (($iSeconds -$iTimerDiv*60) /60) > 0 Then
            GUICtrlSetData($idTime1, StringFormat('%02d:%02d', Int(($iSeconds- $iTimerDiv*60) / 60), Mod($iSeconds, 60)))
        Else
            GUICtrlSetData($idTime1, '00:00')
        EndIf
    
        _ProgressEx_SetData($aProgress1, 100 / $iTimerSeconds * $iSeconds, $iGreen)
        If (($iSeconds -$iTimerDiv*60) /60) = 0 Then
            _SoundPlay($aSound)
        EndIf
        If $iSeconds = 0 Then
            $bTimerOn = False
            _SoundPlay($aSound)
            #MsgBox($MB_OK + $MB_ICONINFORMATION, $sAppTitle, 'Die eingestellte Zeit ist abgelaufen.', 0, $hGui)
            #_ResetTimer()
        EndIf
    EndFunc   ;==>_ChangeTimer
    
    Func _ChangeTimerPause($hWnd, $iMsg, $iIDTimer, $iTime, $idTime1, $idTime2)
        If Not $bTimerOnPause Then Return
        $iSecondsPause -= 1
            GUICtrlSetData($idTimePause, StringFormat('%02d:%02d', Int($iSecondsP / 60), Mod($iSecondsP, 60)))
    
        If (($iSecondsPause -$iTimerDiv*60) /60) > 0 Then
        GUICtrlSetData($idTime2, StringFormat('%02d:%02d', Int($iSecondsP / 60), Mod($iSecondsP, 60)))
        Else
            GUICtrlSetData($idTime2, '00:00')
        EndIf
    
        
        _ProgressEx_SetData($aProgress2, 100 / $iTimerSeconds * $iSecondsPause, $iGreen)
        If (($iSecondsPause -$iTimerDiv*60) /60) = 0 Then
            _SoundPlay($aSound)
        EndIf
        If $iSeconds = 0 Then
            $bTimerOn = False
            _SoundPlay($aSound)
            #MsgBox($MB_OK + $MB_ICONINFORMATION, $sAppTitle, 'Die eingestellte Zeit ist abgelaufen.', 0, $hGui)
            #_ResetTimer()
        EndIf
    EndFunc   ;==>_ChangeTimerPause
    
    Func _WM_MOUSEWHEEL($hWnd, $iMsg, $wParam, $lParam)
        Local $iWheel = _WinAPI_HiWord($wParam) / 120 ; down = -1, up = 1
        Local $aGuiInfo = GUIGetCursorInfo($hGui)
        Switch $aGuiInfo[4]
            Case $idTime
                If $bTimerOn Then Return
                $iTimerSeconds += $iWheel * $iTimerStep
                If $iTimerSeconds < $iTimerStep Then $iTimerSeconds = 6000 - $iTimerStep
                If $iTimerSeconds > 6000 - $iTimerStep Then $iTimerSeconds = $iTimerStep
                $iSeconds = $iTimerSeconds
                GUICtrlSetData($idTime, StringFormat('%02d:%02d', Int($iSeconds / 60), Mod($iSeconds, 60)))
                Return
            Case Else
                Return $GUI_RUNDEFMSG
        EndSwitch
        Return $GUI_RUNDEFMSG
    EndFunc   ;==>_WM_MOUSEWHEEL
    
    Func _ChangeTimerSeconds()
        If $bTimerOn Then Return
        $iTimerSeconds += (@GUI_CtrlId = $idUp ? 1 : -1) * $iTimerStep
        If $iTimerSeconds < $iTimerStep Then $iTimerSeconds = 6000 - $iTimerStep
        If $iTimerSeconds > 6000 - $iTimerStep Then $iTimerSeconds = $iTimerStep
        $iSeconds = $iTimerSeconds
        GUICtrlSetData($idTime, StringFormat('%02d:%02d', Int($iSeconds / 60), Mod($iSeconds, 60)))
        GUICtrlSetData($idTime1, StringFormat('%02d:%02d', Int(($iSeconds- $iTimerDiv*60) / 60), Mod($iSeconds, 60)))
        
    EndFunc   ;==>_ChangeTimerSeconds
    
    Func _ChangeTimerSecondsPause()
        If $bTimerOn Then Return
        $iTimerSeconds += (@GUI_CtrlId = $idUpP ? 1 : -1) * $iTimerStep
        If $iTimerSeconds < $iTimerStep Then $iTimerSeconds = 6000 - $iTimerStep
        If $iTimerSeconds > 6000 - $iTimerStep Then $iTimerSeconds = $iTimerStep
        $iSeconds = $iTimerSeconds
        GUICtrlSetData($idTime2, StringFormat('%02d:%02d', Int($iSeconds / 60), Mod($iSeconds, 60)))
    
    EndFunc   ;==>_Ch
    Func _ResetTimer()
        $iSeconds = $iTimerSeconds
        GUICtrlSetData($idTime, StringFormat('%02d:%02d', Int($iSeconds / 60), Mod($iSeconds, 60)))
        GUICtrlSetData($idTime1, StringFormat('%02d:%02d', Int(($iSeconds- $iTimerDiv*60) / 60 ), Mod($iSeconds, 60)))
        GUICtrlSetData($idTime2, StringFormat('%02d:%02d', Int($iSeconds / 60), Mod($iSeconds, 60)))
    
        $bTimerOn = False
        GUICtrlSetState($idStart, $GUI_ENABLE)
        GUICtrlSetState($idStop, $GUI_DISABLE)
        _ProgressEx_SetData($aProgress1, 100, $iGreen)
    EndFunc   ;==>_ResetTimer
    
    Func _StopTimer()
            $bTimerOn = False
        GUICtrlSetState($idStart, $GUI_ENABLE)
        GUICtrlSetState($idStop, $GUI_DISABLE)
        ;if $idTime
    EndFunc   ;==>_StopTimer
    
    Func _StartTimer()
        $bTimerOn = True
        GUICtrlSetState($idStart, $GUI_DISABLE)
        GUICtrlSetState($idStop, $GUI_ENABLE)
    EndFunc   ;==>_StartTimer
    #EndRegion Funktionen
    
    #Region Menue
    Func _Showinfo()
        MsgBox(0, "Info", "Version "& $sAppVersion & @CRLF & $sAppDate  & @CRLF & $sAppAuthor)
    EndFunc   ;==>_Showinfo
    
    Func _Exit()
        _CloseMainGui()
    EndFunc   ;==>_Exit
    
    Func _Minimize()
        TraySetState(1)
        GUISetState(@SW_HIDE)
    EndFunc   ;==>_Minimize
    
    Func _Restore()
        TraySetState(4)
        GUISetState(@SW_SHOWDEFAULT)
    EndFunc   ;==>_Restore
    #EndRegion menue
    </misc.au3></file.au3></windowsconstants.au3></winapigdi.au3></winapi.au3></timers.au3></staticconstants.au3></sound.au3></guiconstantsex.au3></buttonconstants.au3>
    Alles anzeigen

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™