Anweisung nur einmal pro Minute ausführen

  • Hallo,

    hier meine allererste Frage, bin noch ganz neu in Sachen AutoIT.
    Frage: Wie kann ich eine IF-Anweisung nur einmal ausführen in der Minute.

    hier mein bisheriger Code:

    [autoit]


    $keys = "beispieltext"

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

    While 1
    If (@SEC = "00") Then
    $file = FileOpen("test.txt", 1)
    FileWriteLine($file, @YEAR & "/" & @MON & "/" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC & " : " & $keys)
    FileClose($file)
    EndIf
    WEnd

    [/autoit]

    Bisher schreibt er mir mehrmals in der Sekunde, wenn die Sekunde "00" ist, den Text dahin, der Grund ist mir auch klar warum, nur wie beseitige ich das, dass er mir den Text halt nur einmal hinschreibt?

    Einmal editiert, zuletzt von m-obi (23. Dezember 2008 um 20:51)

  • Hallo.

    Wozu benötigst Du es?
    Ich hoffe nicht für ein Bot oder so !!!

    Bitte um Aufklärung !

    Alina

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • [autoit]

    $keys = "beispieltext"
    Local $sekunde, $sekunde_alt

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

    While 1
    $sekunde = @SEC
    If $sekunde <> $sekunde_alt Then
    $file = FileOpen("test.txt", 1)
    FileWriteLine($file, @YEAR & "/" & @MON & "/" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC & " : " & $keys)
    FileClose($file)
    EndIf
    $sekunde_alt = $sekunde
    WEnd

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

    Anstelle von @sec kannst du auch @min nehmen!


    mfg funkey

  • Jam00

    Wenn diese Lsg. dann meine ich muß es hinter FileClose($file).
    Ansonsten kann es sein, das es nicht immer einwandfrei arbeitet.

    Alina

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • $sekunde musst du nicht vorher deklarieren, aber $sekunde_alt schon, da sie abgefragt wird, bevor sie das erste mal beschrieben wird!
    Man sollte alle Variablen vorher deklarieren, wenn man 'schön'programmiert! Da gibt es sogar eine Option für zwingende Deklaration.

    [autoit]

    Opt('MustDeclareVars', 1)

    [/autoit]

    Das verwende ich aber nie.


    EDIT: Post 555 :P Schnapszahl ;)

  • Dann deklarier ich am besten alle Variablen, ok.

    Nochwas.

    funkey wrote:
    Anstelle von @sec kannst du auch @min nehmen!

    D.h. bei @sec wird die Anweisung nur einmal die Sekunde aufgerufen und bei @min wird sie nur einmal die Minute aufgerufen?

  • Man könnte auch einfach

    [autoit]

    AdlibEnable()

    [/autoit]

    nehmen ;).
    Beispiel:

    [autoit]


    AdlibEnable("_funktion",5000)

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

    Func _funktion()
    MsgBox (0,"","Es sind nun 5 Sekunden vergangen")
    EndFunc

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

    While 1
    WEnd

    [/autoit]

    Würde alle 5 Sekunden die Funktion "_funktion" aufrufen!

  • hab den Code jetzt geändert:

    [autoit]

    Local $file, $keys, $minute, $minute_alt

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

    $keys = "beispieltext"

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

    While 1
    $minute = @MIN
    If $minute <> $minute_alt And @SEC = "00" Then
    $file = FileOpen("test.txt", 1)
    FileWriteLine($file, @YEAR & "/" & @MON & "/" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC & " : " & $keys)
    FileClose($file)
    $minute_alt = $minute
    EndIf
    WEnd

    [/autoit]

    soweit funktioniert er auch, danke an funkey.

    Hab aber noch ein kleines Problem. Unzwar schreibt er folgendes in die Textdatei.

    Code
    2008/12/23 16:29:00 : beispieltext
    2008/12/23 16:29:00 : beispieltext
    2008/12/23 16:30:00 : beispieltext
    2008/12/23 16:31:00 : beispieltext
    2008/12/23 16:32:00 : beispieltext

    Die erste Zeile schreibt er doppelt rein, das soll er aber natürlich nicht.
    Ich weiß nun schon den Grund des Problems aber ich weiß nicht was ich tun soll.
    Er tut es denk ich mal weil am Anfang ja $minute_alt noch undefiniert ist, und für ihm dann ungleich ist.

    • Offizieller Beitrag
    [autoit]

    $keys = "beispieltext"

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

    While 1
    If (@SEC = "00") Then
    $file = FileOpen("test.txt", 1)
    FileWriteLine($file, @YEAR & "/" & @MON & "/" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC & " : " & $keys)
    FileClose($file)
    sleep(500)
    EndIf
    sleep(500)
    WEnd

    [/autoit]

    Meine Variante. Ungetestet.

    peethebee

  • Vllt so:

    Spoiler anzeigen
    [autoit]

    Local $file, $keys, $minute, $minute_alt

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

    $keys = "beispieltext"

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

    Do
    Sleep(500)
    Until @SEC = "00"

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

    While 1
    $minute = @MIN
    If $minute <> $minute_alt Then
    $file = FileOpen("test.txt", 1)
    FileWriteLine($file, @YEAR & "/" & @MON & "/" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC & " : " & $keys)
    FileClose($file)
    $minute_alt = $minute
    EndIf
    WEnd

    [/autoit]
    • Offizieller Beitrag

    Hallo,

    warum so kompliziert?

    [autoit]

    $keys = "beispieltext"

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

    While 1
    If (@SEC = "00") Then
    FileWriteLine("test.txt", @YEAR & "/" & @MON & "/" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC & " : " & $keys)
    Sleep(1000) ; hier mindestens 1000ms warten kann bis 58000ms erhöht werden
    EndIf
    Sleep(500)
    WEnd

    [/autoit]
  • ich hab es mal mit der Lösung von bernd670 probiert, und sie funktioniert. ich hab nur das Sleep(500) weggelassen, weil ich das eigentlich nicht benötige, oder?

    hier nun mein Code:

    [autoit]

    Local $file, $keys

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

    $keys = "beispieltext"

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

    While 1
    If @SEC = "00" Then
    $file = FileOpen("test.txt", 1)
    FileWriteLine($file, @YEAR & "/" & @MON & "/" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC & " : " & $keys)
    FileClose($file)
    Sleep(1200)
    EndIf
    WEnd

    [/autoit]
  • ok hab ich dann auch hinzugefügt, funktioniert super dankeschön.
    Und hiermit ist der Beitrag -closed-.

  • sorry aber ich fress nen besen wenn das KEIN keylogger wird, ich würd hier keinen support liefern.

    ich glaub sogar die eine zeile ist die von kingsuperfly's keylogger, du versuchst ihn zu modden weil er bei schnellem tippen nich alle keys erwischt.

    • Offizieller Beitrag

    Ich weiß ja nicht ,wo in dem Code auch nur einmal eine Taste aufgezeichnet wird. Veilleicht kannst du uns das mal verraten.

  • ich glaub nicht dass WoEf sooo falsch liegt mit seiner vermutung da oben die variable $keys heißt...
    aber einmal in der minute die gedrückten tasten aufzeichnen kommt mir nicht wien keylogger vor...

    Padmak

    Edit:

    Zitat

    ich glaub sogar die eine zeile ist die von kingsuperfly's keylogger, du versuchst ihn zu modden weil er bei schnellem tippen nich alle keys erwischt.

    woher kennstn du nen keylogger? sogar von wem? (ich kenn ihn nicht aber wenn jemand schon so etwas behauptet...) UND sogar dass er nich alle tasten aufzeichnet...
    das stellt dich auch nicht in das absolut beste licht oder?