Skript zu einem bestimmten Zeitpunkt starten und dannach dauerhaft aktiv ausführbar sein

  • Hallo an euch alle!


    Ich habe ein problem und komme nicht weiter und zwar geht es um diesen Skript.


    [autoit]

    While Sleep(100)
    If @YEAR >= 2010 And @MON >= 08 And @MDAY >= 22 And @HOUR >= 17 And @MIN >= 10 Then ExitLoop
    WEnd
    MsgBox(0,"","Ich bin Aktiv wenn das Datum und die Zeit existiert und auch wenn das Datum und die Zeit in der Vergangenheit ist")

    [/autoit]


    Das Skript startet erst wenn das Datum und die Zeit existiert das ist ja ist soweit auch alles ok.Doch möchte ich es so hin bekommen das wenn die Zeit und das Datum erreicht ist auch danach das Skript funktioniert. Ich werde die einzelnen Punkte die ich meine noch mal erklären.

    1. Das Skript startet doch es wird erst ausgelöst am 22.08.2010 um 17:00 Uhr
    2. Doch ist das Datum und die Zeit sind längst erreicht wo eigentlich das Skript wartet bis das Datum 22.08.2010 um 17:00 Uhr existiert wobei es dann schon am 23.08.2010 um X Uhr ist. Soll das Skript nicht mehr Warten das Skript soll dauerhaft ausführen.

    Es würde mich sehr freuen wenn mir jemand helfen würde.


    Gruß Baron

  • Hi!


    Setzt diese Prüfung doch in eine Func, daraus ein Return und Skript läuft weiter????

    Edit:/
    Beispiel

    Spoiler anzeigen
    [autoit]

    Opt('GUIOnEventMode', 1)
    Waten_Warten_Warten()

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

    Global $Form = GUICreate('AU3', 400, 200, -1, -1)
    GUISetOnEvent(-3, 'Ende')
    GUISetState()

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

    Func Waten_Warten_Warten()
    While Sleep(1000)
    If @YEAR >= 2010 And @MON >= 08 And @MDAY >= 21 And @HOUR >= 16 And @MIN >= 00 Then ExitLoop
    WEnd
    MsgBox(0, "", "Ich bin Aktiv wenn das Datum und die Zeit existiert und auch wenn das Datum und die Zeit in der Vergangenheit ist")
    EndFunc ;==>Waten_Warten_Warten

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

    Func Ende()
    Exit
    EndFunc ;==>Ende

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

    While 1 * Sleep(10)
    WEnd

    [/autoit]

    LG Kleienr

  • Kleiner

    Habe das Datum im skript auf 2007 gestellt doch es passiert wie das von mir das es nicht aufgerufen wird mehr. das soll ja aufgerufen werden nur wenn wie z.B. 2020 dann soll es nicht aufgerufen werden.


    autoBert

    Kannst du mir zu meinem kleinen Skript ein Beispiel Basteln mit dem befehl _DateDiff


    Gruß Baron

  • Hi!

    Entweder du niemst das Bespiel von autoBert!

    o. du drehst die Operatoren > um in wenn kleiner als!

    Mit dem beispiel von autoBert wird die abfrage schneller sein! ;)

    LG Kleiner

  • Ich habe es mal so versucht doch es geht nicht!

    [autoit]

    #Include <Date.au3>

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

    $sType = "D"
    $sStartDate = "2010/08/21 16:32:00"
    $sEndDate = "2020/12/24 18:32:00"

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

    _DateDiff($sType, $sStartDate, $sEndDate)
    MsgBox(0,"","ich bin Aktiv ab 21.08.2010 um 16:32:00 und kann danach dauerhaft benutzt werden")

    [/autoit]

    bitte um Hilfe

  • Hi!


    Bitte Schön!

    [autoit]

    #include <Date.au3>

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

    Dim $End = '2010/08/21 16:45:37'

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

    If _NowCalc() < $End Then MsgBox(0,0,'Noch darf ich laufen :-)')

    [/autoit]

    LG Kleiner

  • Habe es getestet doch das ist doch das gleiche effect wie meins !

    Ich wollte es nicht so haben das das skript noch gültig sein soll sondern

    Das Skript soll am 21.08.2010 um 17:00 Uhr ausgeführt werden nicht vorher und wenn die zeit erreicht hat auch dann die vergangenheit ausführen kann.

    wenn ich zum Beispiel am 21. 08.2010 nicht zu hause bin und am 22.08.2010 zu hause bin das der Skript dann doch noch anspringt.

    und der Befehl _DateDiff() könnte der Schlüssel sein zu meinem problem

    Gruß Baron

  • Hallo Baron1977,

    hier ein Beispiel:

    [autoit]

    #include <Date.au3>

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

    ;Achtung Zeitangaben alle im amerikanischen Format yyyy/mm/dd hh:mm
    $dtFrom = "2010/08/19 17:10"
    $dtTo = "2010/10/19 17:10"
    _checkTimeBetween($dtFrom, $dtTo)
    $dtFrom = "2010/08/23 17:10"
    $dtTo = "2010/10/19 17:10"
    _checkTimeBetween($dtFrom, $dtTo)
    $dtFrom = "2010/06/21 17:10"
    $dtTo = "2010/08/19 17:10"
    _checkTimeBetween($dtFrom, $dtTo)

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

    Func _checkTimeBetween($dtFrom, $dtTo)
    If $dtFrom <= _NowCalc() And $dtTo >= _NowCalc() Then
    MsgBox(0, _NowCalc() & " Innerhalb Zeitfenster", $dtFrom & " " & $dtTo)
    Else
    MsgBox(0, _NowCalc() & " ausserhalb Zeitfenster", $dtFrom & " " & $dtTo)
    EndIf
    EndFunc ;==>checkTimeBetween

    [/autoit]

    Edit: Skript ausgetauscht (einfachere Lösung)

    mfg (Auto)Bert

    Einmal editiert, zuletzt von autoBert (21. August 2010 um 17:02)

  • Ich brauche keine Skript die jederzeit anspringen oder auf einer bestimmten zeit erlöscht das bekomme ich mit meinem Skript hin.

    Ich will ein Skript das in eine whileschleife ist und wartet bis die zeit und Datum existiert und erst dann die msgbox aufruft wenn man dann ein tag später es ausführt es trotzdem funkioniert das die msgbox auf gerufen wird.

    Ich brauche keine abfrage damit dann am ende das skript aus geht so.


    Ich Bitte um Hilfe

  • dann mach es so,

    [autoit]

    #include <Date.au3>

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

    ;achtng Zeitangaben alle im amerikanischen Format yyyy/mm/dd hh:mm
    $dtFrom = "2010/08/19 17:10"
    While Sleep(100)
    If _NowCalc() >= $dtFrom Then ExitLoop
    WEnd
    MsgBox(0, "", "Ich bin Aktiv wenn das Datum und die Zeit existiert und auch wenn das Datum und die Zeit in der Vergangenheit ist")

    [/autoit]

    mfg autoBert

  • Zitat
    [autoit]

    While Sleep(100)
    If @YEAR >= 2010 And @MON >= 08 And @MDAY >= 22 And @HOUR >= 17 And @MIN >= 10 Then ExitLoop
    WEnd
    MsgBox(0,"","Ich bin Aktiv wenn das Datum und die Zeit existiert und auch wenn das Datum und die Zeit in der Vergangenheit ist")

    [/autoit]

    das muß doch so gehen wenn das Datum und die Zeit existiert dann soll er mir die msgbox ausgeben ist das datum höher also 23.08.2010 dann so er keine abfrage mehr durchführen sondern gleich die msgbox ausgeben doch ist die zeit von 22.08.2010 noch nicht erreicht soll das skript aktiv sein aber keine msgbox anzeigen.

    das muß doch gehen wie if them und dann if not .

    Bitte Bitte um Hilfe

  • autoBert

    Zitat
    [autoit]

    #include <Date.au3>

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

    ;achtng Zeitangaben alle im amerikanischen Format yyyy/mm/dd hh:mm
    $dtFrom = "2010/08/19 17:10"
    While Sleep(100)
    If _NowCalc() >= $dtFrom Then ExitLoop
    WEnd
    MsgBox(0, "", "Ich bin Aktiv wenn das Datum und die Zeit existiert und auch wenn das Datum und die Zeit in der Vergangenheit ist")

    [/autoit]

    Ich Glaube wir Haben es habe die zeit und datum auf 2010/08/21 17:50 gestellt die msgbox kommt noch nicht und dann ist sie gekommen auch wenn es 17:52 ist.

    Habe es noch mal getest es geht.

    Ich Danke dir AutoBert

    MfG

    Baron

  • @Sortoc,

    ist doch bereits gelöst.

    und das schöne an der amerikanischen DatumZeit-Notation ist das man direkt vergleichen kann. _DateDiff ist also überflüssig da die Differenz nicht interessiert sondern nur ob es später ist.

    mfg autoBert