• Offizieller Beitrag

    Dieses Script ist ein kleiner Timer. Gut geeignet zum Tee kochen oder Pizza backen. :)

    Es gibt noch einen kleinen Fehler: Wenn man den Timer stoppt, erscheint der TrayTip "Timer gestoppt!" nicht und ich weiß nicht, warum...
    Aber ansonsten funktioniert's.

    Edit: Wenn der Timer abgelaufen war, waren die TrayMenüItems noch deaktiviert. :whistling:

    Spoiler anzeigen
    [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]
    Global $ahItem[7], $iTimerInit = 10, $iCounter = 0
    Global $sAlarmSound = @WindowsDir & '\Media\ringin.wav'
    Global $sTitle = 'Pizzatimer v1.1'

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

    $hInit = TrayCreateMenu('Zeitvorgabe...')
    For $i = 0 To 6
    $ahItem[$i] = TrayCreateItem($aTime[$i] & ' Minute' & StringMid(' n', 1 + ($aTime[$i] > 1), 1), $hInit, -1, 1)
    TrayItemSetOnEvent(-1, '_Timer')
    Next
    TrayItemSetState($ahItem[4], $TRAY_CHECKED)

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

    $hStart = TrayCreateItem('Timer starten')
    TrayItemSetOnEvent(-1, '_Start')

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

    $hStop = TrayCreateItem('Timer stoppen')
    TrayItemSetOnEvent(-1, '_Stop')
    TrayItemSetState(-1, $TRAY_DISABLE)

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

    TrayCreateItem('')

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

    TrayCreateItem('Programm beenden')
    TrayItemSetOnEvent(-1, '_End')

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

    TraySetIcon('Shell32.dll', -44)
    TraySetToolTip($sTitle)
    TraySetClick(16)
    TraySetState()

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

    While True
    Sleep(50)
    WEnd

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

    Func _End()
    Exit
    EndFunc ;==>_End

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

    Func _Start()
    TrayItemSetState($hStart, $TRAY_DISABLE)
    TrayItemSetState($hStop, $TRAY_ENABLE)
    TrayItemSetState($hInit, $TRAY_DISABLE)
    $iCounter = $iTimerInit * 60 + 1
    _Countdown()
    AdlibEnable('_Countdown', 1000)
    EndFunc ;==>_Start

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

    Func _Stop()
    AdlibDisable()
    TrayTip($sTitle, 'Timer gestoppt!', 5, 17)
    TrayItemSetState($hStop, $TRAY_DISABLE)
    TrayItemSetState($hStart, $TRAY_ENABLE)
    TrayItemSetState($hInit, $TRAY_ENABLE)
    EndFunc ;==>_Stop

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

    Func _Timer()
    $iTimerInit = $aTime[@TRAY_ID - $ahItem[0]]
    EndFunc ;==>_Timer

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

    Func _Countdown()
    $iCounter -= 1
    TrayTip($sTitle, 'Restzeit: ' & _MinSec($iCounter), 5, 17)
    If $iCounter = 0 Then
    AdlibDisable()
    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]
  • Wichtig: Dieses Script kann Pizzen retten! :thumbup:

    Naja, ich benutzte dann doch lieber die gute alte Uhr zum aufdrehen ;)

    Edit: kann mir aber gut vorstellen wie Oscar vor der schwarzen Pizza saß

  • Cooles Script, werd ich brauchen... :rock:
    Kann mir das mit den Traytips auch nicht erklären (wär auch komisch, wenn ichs könnte, und du nicht...)
    /edit: Es muss an dem Klicken liegen, wenn ich ein Hotkeyset einbaue auf _Stop, gehts...

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • Oscar schrieb: "Gut geeignet zum Tee kochen oder Pizza backen."

    Also ich liebe ja Tea und am liebsten den englischen und den genau 3:30 Minuten gezogen.
    Pizza? Meine Lieblingspizza ist die Salami mit extra Hackfleisch, Krabben, Hühnerbruststreifen und Girosstücke. Gibt es beim Pizza-Mann leider nicht fertig und so muß ich immer selber machen. Aber schwarz wird bei mir nie eine Pizza, wenn ich die duftet so lecker wenn sie fertig ist, das ich dann lieber noch etwas vor dem Backofen stehe und schaue bis sie schön goldbraun ist. Gut denn der Backofen nicht unter den Herdplatten ist, sondern auf Brusthöhe.

    Aber der Timer ist gut, denn damit kann man ja auch auf andere Sachen die noch am Tag laufen aufmerksam gemacht werden.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Hallo Oscar,

    Dein Pizzatimer war für mich eine gute Vorlage für die Erstellung eines Traymenüs mit den gleichen OPT-Parametern.
    Ich habe mich also rangesetzt und ein doch recht umfangreiches Progrämmchen erstellt und bin dabei auf einen "Fehler" bzw. eine "Ungereimtheit" gestossen:

    Nach dem Timerstart habe ich das Traymenu geöffnet gehalten und festgestellt, dass die Endzeit dadurch nie erreicht wird.
    Bei meinem Programm hat dies zur Folge, dass mein Programm deshalb auch nicht wie gewollt arbeitet, solange das Traymenu geöffnet ist.

    Ist dieses Problem behebar ? Ich habe in der Hilfe dazu nichts gefunden.

    Danke und Gruss
    ExBerliner

    • Offizieller Beitrag

    InputBoxen, MsgBoxen, TrayMenüs und auch ein GUIMenü halten die Skriptausführung an, während sie geöffnet sind.
    Es gibt aber die Timer-UDF. Damit kann man zeitgesteuert Funktionen aufrufen, die auch dann noch aufgerufen werden, wenn das Skript eigentlich angehalten wurde (Menü und co.).
    Du müssest also statt AdlibRegister die Timer-UDF "_Timer_SetTimer()" benutzen.