Mal 3 kleine fragen (Datum, Funktionsabbruch und Endlosschleife)

  • Hallo AutIt Community,

    aufgrund eines Tipp´s habe ich mir mal AutiIt angesehen und mein erstes Script mit ein paar Funktionen programmiert (war echt schwierig, bin totaler Anfänger).

    [autoit]


    #include #include <Date.au3>

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

    HotKeySet("^q", "abbruch")
    HotKeySet("^.", "datum")
    HotKeySet("{NUMPADDOT}", "proepunkt")
    HotKeySet("{F1}", "mist")

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

    While 1
    WEnd

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

    Func proepunkt()
    If WinActive("[CLASS:Dialog]", "") Then
    Send(".")
    Else
    Send(",")
    EndIf
    EndFunc

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

    Func datum()
    Send(@MDAY)
    Send(".")
    Send(@MON)
    Send(".")
    Send(@year)
    EndFunc

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

    Func mist()
    Send("M")
    Sleep(1000)
    Send("i")
    Sleep(1000)
    Send("s")
    Sleep(1000)
    Send("t")
    Sleep(1000)
    EndFunc

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

    Func abbruch()
    Exit
    EndFunc

    [/autoit]


    Das ganze funktioniert auch so wie ich es will, ich habe aber mal noch ein paar Fragen:

    1. Frage: Ich halte das Script mit der Schleife "am Leben". Das funktioniert scheinbar, kommt mir aber irgendwie falsch vor... Ist das so ok?

    2. Frage: Meine Datumsfunktion sollt per Hotkey das Datum auswerfen mit deutschem Format (17.08.2009) Kriege ich das auch in einem send unter?

    3. Besteht eine Möglichkeit per Hotkey eine laufende Funktion (z.B. mist)abzubrechen ohne das Script zu beenden?

    Einmal editiert, zuletzt von ProE (17. August 2009 um 11:53)

  • zu 1:
    das ist ok, denn so beendet sich das script nicht gleich(wie du es mitbekommen hast) und du kannst die funktionen immer nutzen.

    zu 2:

    [autoit]


    Send(@MDAY&"."&@MON&"."&@year)

    [/autoit]

    zu 3:
    versuch es mal mit einer "If" Abfrage
    Bsp.
    Baue z.B "$Status" am anfang des scripts und gib ihm den wert 0($Status=0)
    und in die func mist baust du: If $Status = 0 Then *Diefunktion* EndIF
    und erstelle eine function mit einem hotkey in der:

    [autoit]

    $State=1

    [/autoit]

    steht. dann dürfte es nichtmehr gehen.(hab das grad ausm kopf gemacht sorry wen es falsch ist)
    Edit zu 3:
    wen du dann die func mit $State=1 aktivierst müssted as skirpt sich beenden

    Click Ctrl-C to copy. (hides when lost focus)

  • Spoiler anzeigen
    [autoit]


    #include <Date.au3>
    HotKeySet("{ENTER}", "_Date")
    HotKeySet("{ESC}", "_Exit")
    While 1
    WEnd
    Func _Date()
    send(_NowDate())
    EndFunc
    Func _exit()
    Exit
    EndFunc

    [/autoit]

    Probier es anstatt immer mit @Hour usw. mal mit _nowdate() ;)

    [autoit]


    While $Life = True
    $nMSG = BrainGetMsg()
    Switch $nMSG
    Case $Idea
    _Convert_Idea2Code()
    EndSwitch
    WEnd

    [/autoit]
  • Super, danke! Alles soweit richtig/funktioniert bis auf den Abbruch der Funktion. Ich glaube das funktioniert so nicht:

    [autoit]


    #include

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

    $reset=0

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

    HotKeySet("^q", "beenden")
    HotKeySet("^w", "abbruch")
    HotKeySet("^.", "datum")
    HotKeySet("{NUMPADDOT}", "proepunkt")
    HotKeySet("{F1}", "mist")

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

    While 1
    WEnd

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

    Func proepunkt()
    If WinActive("[CLASS:Dialog]", "") Then
    Send(".")
    Else
    Send(",")
    EndIf
    EndFunc

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

    Func datum()
    ;~ Send(@MDAY&"."&@MON&"."&@year) ebenfalls möglich
    send(_NowDate())
    EndFunc

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

    Func mist()
    If $reset = 0 Then
    Send("M")
    Sleep(1000)
    Send("i")
    Sleep(1000)
    Send("s")
    Sleep(1000)
    Send("t")
    Sleep(1000)
    EndIF
    EndFunc

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

    Func abbruch()
    $reset = 1
    Sleep(2000)
    $reset = 0
    EndFunc

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

    Func beenden()
    Exit
    EndFunc

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


    Wenn die Funktion "mist" erst mal gestartet ist, läuft sie bis zum Ende durch (oder ich habe was falsch gemacht)

  • Probiers mal so:

    Spoiler anzeigen
    [autoit]


    #include <Date.au3>

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

    $reset=0

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

    HotKeySet("^q", "beenden")
    HotKeySet("^w", "abbruch")
    HotKeySet("^.", "datum")
    HotKeySet("{NUMPADDOT}", "proepunkt")
    HotKeySet("{F1}", "mist")

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

    While 1
    WEnd

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

    Func proepunkt()
    If WinActive("[CLASS:Dialog]", "") Then
    Send(".")
    Else
    Send(",")
    EndIf
    EndFunc

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

    Func datum()
    ;~ Send(@MDAY&"."&@MON&"."&@year) ebenfalls möglich
    send(_NowDate())
    EndFunc

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

    Func mist()
    If $reset = 0 Then Send("M")
    Sleep(1000)
    If $reset = 0 Then Send("i")
    Sleep(1000)
    If $reset = 0 Then Send("s")
    Sleep(1000)
    If $reset = 0 Then Send("t")
    Sleep(1000)
    $reset = 0

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

    EndFunc

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

    Func abbruch()
    $reset = 1
    EndFunc

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

    Func beenden()
    Exit
    EndFunc

    [/autoit]
    [autoit]


    While $Life = True
    $nMSG = BrainGetMsg()
    Switch $nMSG
    Case $Idea
    _Convert_Idea2Code()
    EndSwitch
    WEnd

    [/autoit]
  • weil bei dir prüft das skript 1mal den status, un kann somit nicht mittendrin abgebrochen werden, jetzt prüft er vor jedem Buchstaben den Status :) und der status wird am ende von _mist() auf 0 gesetzt, so wird die Func sicher beendet

    [autoit]


    While $Life = True
    $nMSG = BrainGetMsg()
    Switch $nMSG
    Case $Idea
    _Convert_Idea2Code()
    EndSwitch
    WEnd

    [/autoit]
  • bitte bitte
    das Problem kenn ich^^ man sucht den Fehler und findet ihn nicht...dabei ist er soo logisch xD 8o

    [autoit]


    While $Life = True
    $nMSG = BrainGetMsg()
    Switch $nMSG
    Case $Idea
    _Convert_Idea2Code()
    EndSwitch
    WEnd

    [/autoit]