Schleife anders Umsetzen^^

  • bin gerade dabei einen onlinezeitregler zu scripten und nun die frage ist es möglich dass entweder:
    1.beim rechtsklick aufs script start und pause nicht fukntionieren oder
    2. dass man das script unten rechts bei der uhrzeit nicht sieht^^

    wenn nein gibt es eine alternative z.B wenn es beedet oder gepaused wir dass er den pc herrunterfährt

    schonmal danke im vorraus

    Mfg Non

    Einmal editiert, zuletzt von NonStop (19. August 2007 um 14:35)

  • Wollte kein neues Thema aufmachen^^
    deswegen hier die frage:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    $cdown = 120
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Start", 138, 53, 193, 115)
    GUISetBkColor(0xFFFBF0)
    $Label1 = GUICtrlCreateLabel($cdown, 0, 0, 83, 49); C down
    GUICtrlSetBkColor(-1, 0xFFFBF0)
    GUICtrlSetFont(-1, 40, 400, 0, "MS Sans Serif")
    $MenueBut = GUICtrlCreateButton("Menü", 88, 0, 49, 49, 0)
    GUISetState(@SW_SHOW)
    while 1
    Sleep(60000)
    $cdown = $cdown - 1
    GUICtrlSetData($Label1,$cdown)
    WEnd

    [/autoit]

    kann ich das noch anders ausdrücken also dass er nach 1min -1 rechnet denn die schleife darf nicht stehenbleiben weil das gui ansprechbar seien muss

    Mfg Non

    edit:
    2te frage wie macht man konfikurationseinstellungen :P

    Einmal editiert, zuletzt von NonStop (21. August 2007 um 14:58)

  • also das ist die erste schleife ich habe nocheine deswegen ist meine frage ob es möglich ist 2mal while parallel ablaufen zu lassen oder es anders zu regeln da ja sonst GUIGetMsg nicht funktioniert^^

  • Wenn du deine GUI anstelle im Message-Loop-Modus im OnEvent-Modus arbeiten lässt brauchst du nicht dauernd Messages abfragen.
    Die GUI-Ereignisse werden dabei direkt mit Funktionen verknüpft.
    So sind diese Ereignisse dann unabhängig davon was du im restlichen Skript machst.

    Würde für deine GUI z.b. so aussehen:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    Opt("GUIOnEventMode", 1)

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

    $cdown = 120

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

    $Form1 = GUICreate("Start", 138, 53, 193, 115)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_raus")
    GUISetBkColor(0xFFFBF0)
    $Label1 = GUICtrlCreateLabel($cdown, 0, 0, 83, 49); C down
    GUICtrlSetBkColor(-1, 0xFFFBF0)
    GUICtrlSetFont(-1, 40, 400, 0, "MS Sans Serif")
    $MenueBut = GUICtrlCreateButton("Menü", 88, 0, 49, 49, 0)
    GUICtrlSetOnEvent($MenueBut, "_Button")

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

    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(60000)
    $cdown -= 1
    GUICtrlSetData($Label1,$cdown)
    WEnd

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

    Func _raus()
    Exit
    EndFunc

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

    Func _Button()
    MsgBox(0,"", "Button wurde gedrückt")
    EndFunc

    [/autoit]

    Wenn du es aber unbedingt im Message-Loop-Modus haben willst musst du auf das Sleep verzichten und stattdessen mit alternativen arbeiten wie z.b. einem Timer:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    $cdown = 120

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

    $Form1 = GUICreate("Start", 138, 53, 193, 115)
    GUISetBkColor(0xFFFBF0)
    $Label1 = GUICtrlCreateLabel($cdown, 0, 0, 83, 49); C down
    GUICtrlSetBkColor(-1, 0xFFFBF0)
    GUICtrlSetFont(-1, 40, 400, 0, "MS Sans Serif")
    $MenueBut = GUICtrlCreateButton("Menü", 88, 0, 49, 49, 0)
    GUISetState(@SW_SHOW)

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

    $Timer = TimerInit()

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

    While 1
    If TimerDiff($Timer) > 60000 Then
    $cdown -= 1
    GUICtrlSetData($Label1,$cdown)
    $Timer = TimerInit()
    EndIf

    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]
  • ok danke onevent habe ich ganz vergessen^^
    naja jetzt muss ich das komplette script umschreibe da onevent einfach ist^^