Sprechblase aus Autoit Symbol

  • Hallo,
    Ich würde gerne so eine Sprechblase aus dem Autoit symbol kommen lassen, wie bei Oscars Pizzatimer:

    [Pizzatimer]

    [autoit]

    #include <Constants.au3>

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

    Opt('TrayAutoPause', 0)
    Opt('TrayMenuMode', 1)
    Opt('TrayOnEventMode', 1)

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

    Global $aTime[7] = [1, 2, 3, 5, 10, 20, 30] ; Zeitvorgaben in Minuten (kann hier geändert/erweitert werden)
    Global $ahItem[UBound($aTime)] ; Array für die TrayItems bei der Zeitvorgabe
    Global $iStandard = 4 ; der Wert, der beim Programmstart voreingestellt sein soll (beginnt bei Null, hier also der 5. Wert = 10 Min.)
    Global $iTimerInit = $aTime[$iStandard] ; die Initvariable wird mit der Zeitvorgabe des voreingestellten TrayItems belegt
    Global $iCounter = 0 ; diese Variable wird später zum runterzählen benutzt
    Global $sAlarmSound = RegRead('HKEY_CURRENT_USER\AppEvents\Schemes\Apps\.Default\SystemExclamation\.Default', '') ; Alarmsignal festlegen
    Global $sTitle = 'Pizzatimer v1.1' ; Programmtitel

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

    $hInit = TrayCreateMenu('Zeitvorgabe...') ; TrayMenü erstellen
    For $i = 0 To UBound($aTime) - 1 ; Schleife, um die TrayItems für die Zeitvorgaben zu erstellen
    $ahItem[$i] = TrayCreateItem($aTime[$i] & ' Minute' & StringMid(' n', 1 + ($aTime[$i] > 1), 1), $hInit, -1, 1)
    ; das StringMid ist ein kleiner Trick, um beim Wert "1" nur "Minute" und bei allen anderen Werten "Minuten" anzuzeigen
    TrayItemSetOnEvent(-1, '_Timer') ; diese Funktion wird ausgeführt, wenn das TrayItem angeklickt wird
    Next
    TrayItemSetState($ahItem[$iStandard], $TRAY_CHECKED) ; dieses TrayItem (hier der 5. Wert, siehe oben) erhält den Checked-Status

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

    $hStart = TrayCreateItem('Timer starten') ; TrayItem erstellen
    TrayItemSetOnEvent(-1, '_Start') ; diese Funktion wird ausgeführt, wenn das TrayItem angeklickt wird

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

    $hStop = TrayCreateItem('Timer stoppen') ; TrayItem erstellen
    TrayItemSetOnEvent(-1, '_Stop') ; diese Funktion wird ausgeführt, wenn das TrayItem angeklickt wird
    TrayItemSetState(-1, $TRAY_DISABLE) ; dieses TrayItem erstmal deaktivieren (Timer läuft ja noch nicht)

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

    TrayCreateItem('') ; einen Strich (leeren Eintrag) im TrayMenü erzeugen

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

    TrayCreateItem('Programm beenden') ; TrayItem erstellen
    TrayItemSetOnEvent(-1, '_End') ; diese Funktion wird ausgeführt, wenn das TrayItem angeklickt wird

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

    TraySetIcon('Shell32.dll', -44) ; Das Icon festlegen, was im Tray angezeigt wird
    TraySetToolTip($sTitle) ; den ToolTip (wenn sich die Maus über dem Icon befindet) festlegen
    TraySetClick(16) ; Mit welcher Maustaste soll das TrayMenü aufgerufen werden (hier die rechte Maustaste)
    TraySetState() ; das TrayMenü anzeigen
    HotKeySet('!q', '_Stop') ; [ALT] + [q] zum stoppen des Timers

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

    While True ; Endlosschleife
    Sleep(50) ; Sleep-Befehl, um den Prozessor zu entlasten
    WEnd

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

    Func _End()
    Exit
    EndFunc ;==>_End

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

    Func _Start() ; diese Funktion wird aufgerufen, wenn im TrayMenü "Timer starten" angeklickt wird
    TrayItemSetState($hStart, BitOR($TRAY_DISABLE, $TRAY_UNCHECKED)) ; "Timer starten" deaktivieren
    TrayItemSetState($hStop, $TRAY_ENABLE) ; "Timer stoppen" aktivieren
    TrayItemSetState($hInit, $TRAY_DISABLE) ; Zeitvorgabe-Menü deaktivieren
    $iCounter = $iTimerInit * 60 + 1 ; die Zählvariable mit der Zeitvorgabe (hier umgerechnet in sek.) belegen
    _Countdown() ; Funktion sofort einmal aufrufen, um den TrayTip anzeigen zu lassen
    AdlibRegister('_Countdown', 1000) ; Danach automatisch alle 1000 ms die Funktion aufrufen
    EndFunc ;==>_Start

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

    Func _Stop() ; diese Funktion wird aufgerufen, wenn im TrayMenü "Timer stoppen" angeklickt oder der Hotkey benutzt wird
    AdlibUnRegister('_Countdown') ; Die Aufruf-Automatik stoppen
    TrayTip($sTitle, 'Timer gestoppt!', 5, 17) ; TrayTip entsprechend anzeigen
    TrayItemSetState($hStop, BitOR($TRAY_DISABLE, $TRAY_UNCHECKED)) ; "Timer stoppen" deaktivieren
    TrayItemSetState($hStart, $TRAY_ENABLE) ; "Timer starten" aktivieren
    TrayItemSetState($hInit, $TRAY_ENABLE) ; Zeitvorgabe-Menü aktivieren
    EndFunc ;==>_Stop

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

    Func _Timer() ; diese Funktion wird aufgerufen, wenn im TrayMenü einer der Zeitvorgabe-Werte angeklickt wird
    $iTimerInit = $aTime[@TRAY_ID - $ahItem[0]] ; Die Initvariable mit dem Wert aus dem TrayMenü belegen
    EndFunc ;==>_Timer

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

    Func _Countdown()
    $iCounter -= 1
    TrayTip($sTitle, 'Restzeit: ' & _MinSec($iCounter), 5, 17)
    If $iCounter = 0 Then
    AdlibUnRegister('_Countdown')
    TrayTip($sTitle, 'Zeit um!', 5, 17)
    SoundPlay($sAlarmSound)
    TrayItemSetState($hStop, $TRAY_DISABLE)
    TrayItemSetState($hStart, $TRAY_ENABLE)
    TrayItemSetState($hInit, $TRAY_ENABLE)
    EndIf
    EndFunc ;==>_Countdown

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

    Func _MinSec($iCounter)
    Local $sOut = ''
    If $iCounter > 59 Then
    $sOut = Int($iCounter / 60) & ' min. und '
    $sOut &= Mod($iCounter, 60) & ' sek.'
    Else
    $sOut = $iCounter & ' sek.'
    EndIf
    Return $sOut
    EndFunc ;==>_MinSec

    [/autoit]

    [/spoiler]

  • ok, habs gemacht, aber bei mir ist das script erst gestartet nach dem ichs in Schleife gesetzt habe, dann wurde ich natürlich zu gespamt

    achja und wiekann ich da noch button einfügen?