Hilfe bei AutoIT

  • Hallo Community,
    ich bin es mal wider. Ich wollte euch fragen, wie ich am besten ein von mir programmiertes Programm jeden Freitag um 1:00 Nachts aufrufen kann, ohne den Taskplaner zu benutzen! Der taskplaner funktioniert deshalb nicht, da der Windows Benutzer gesperrt ist das bedeutet das das Programm irgendwie laufen muss ohne dass jemand angemeldet ist. Wie realisiere ich das mit AutoIT also am besten?

    Grüße Lupos

    Einmal editiert, zuletzt von Lupos (8. Februar 2011 um 10:57)

  • Man Kann m.E. aber einen Task auch so konfigurieren, das es egal ist, wer angemeldet ist, oder ob der Anmeldebildschirm gesperrt ist, der Task könnte z.B. als System laufen. Wenn das nicht geht , könnte hier ein Cronjob helfen, der es als Dienst konfiguriert:

    crondienst

  • Hallo lupos,

    was spricht denn dagegen dass ein Benutzer angemeldet ist. Du kannst ja in deinem Skript ganz am Anfang

    [autoit]

    BlockInput ;Sperrt/Entsperrt Maus und Tastatur

    [/autoit]

    vewenden damit nicht die Putzfrau anfängt Solitair zu spielen. Am Ende deines Skriptes machst du dann einen

    [autoit]

    Shutdown(9);Zum Herunterfahren mit Stromabschaltung

    [/autoit]

    mfg autoBert

  • Vielen Dank, erstmal für die super schnelle reaktion, aber das Programm läuft auf einem Small Buisness Server 2008 R2. Das bedeutet somit, es darf keinBenutzer angemeldet sein, wäre das also realiesierbar mit CronJob, bzw. der Lösung von dir autoBert?

    Weil, wie kann ich Maus / Tastatur entsperren bzw. sperren wenn kein Benutzer angemeldet ist, der das Programm ausführen kann?

    Edit: Cronob, kann leider nicht ausgeführt werden, wenn kein Benutzer angemeldet ist! Oder er kann die GUI nicht aufrufen die ich mit dem selbst programmierten Programm starte!

    Grüße Lupos

    2 Mal editiert, zuletzt von Lupos (7. Februar 2011 um 12:07)

  • Wofür startest du eine GUI um 1 Uhr Nachts, die sieht doch eh niemand ?(

    Zitat von Lupos

    Weil, wie kann ich Maus / Tastatur entsperren bzw. sperren wenn kein Benutzer angemeldet ist, der das Programm ausführen kann?


    Ich denke autoBert meint das du deinen PC an lässt, jedoch nicht brauchbar machst, damit, wie so schön in autoBerts Beispiel, die Putzfrauen kein Solitair spielen.
    Danach wird der Computer runtergefahren.

  • @ BadBunny: Ich starte die GUI, damit eine Warnmeldung in Backup Exec bestätigt wird, und das Programm das Band auswerfen lässt.
    Das soll eine Routine werden, damit der Kunde nicht jeden Freitag morgen um 8:00 bei uns anruft und wir uns aufschalten müssen, wollte ich es gerne automatisieren mit AutoIT. Dies ist jedoch wie mein Programm aussieht immoment nur möglich, wenn ein Benutzer angemeldet ist und dieser Gesperrt ist über die Taksplanung. Sobald keiner mehr angemeldet ist funktioniert dieses Programm nicht mehr:

    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------

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

    ; Backup Exec 2010 R2 starten
    Run("D:\Program Files\Symantec\Backup Exec\BkupLnch.exe")

    ;Wartet 10 sekunden
    Sleep(10000)

    ; Fenster Warnmeldungen aufrufen
    Send("!f & w")

    ;Wartet 5 Sekunden nach ausführung von SEND Befehl
    Sleep(5000)

    ;Fenster aktive Meldungen aurufen
    Send("!a & aa")
    Send("{Enter}")

    ;Warten bis Fenster Aktiv ist
    WinWaitActive("Symantec Backup Exec™ 2010")

    ; Maus Cursor auf Warnung Positionieren & Doppelklick ausführen
    MouseClick("", 205, 167, 2)

    ; TAB & Enter senden um das Fenster "Auftrag mit Ausnahmen abgeschlossen" zu bestätigen
    Send("{TAB}")

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

    ;Wartet 6,5 sekunden
    Sleep(6500)

    ;Sendet ENTER Befehl an Offenes Fenster
    Send("{ENTER}")

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

    ;Schließt Symantec BAckup Exec, nach erfolgreichem Ausführen des Programms
    WinClose("Symantec Backup Exec","")

    [/autoit]

    Habe auch noch keine Möglichkeit gefunden wie ich das Programm starten lasse, das die GUI Backup Exec aufruft, ohne das ein Benutzer angemeldet ist. It es überhaupt möglich ist die nächste Frage für mich?!
    Hoffe konnte das etwsa klarmachen :)

    Grüße Lupos

    Einmal editiert, zuletzt von Lupos (7. Februar 2011 um 13:35)

  • Hallo lupos,

    Ich starte die GUI, damit eine Warnmeldung in Backup Exec bestätigt wird


    Wäre es nicht vernünftiger Backp Excec so zu konfigurieren, dass keine Warnmeldung erscheint. Denn dieses mächtige Programm ist doch für genau diesen vollautomatischen unbeaufsichtigten Betrieb konzipiert. Nach einmaligem Einrichten sollte kein Fremdprogramm zum starten nötig sein, alle Sicherungsaufgaben laufen als Service evtl. Fehler werden in LOG-Dateien gespeichert. Vielleicht solltest du/deine Firma besser in eine Schulung bei Symantec investieren,

    Edit: gerade habe ich mir die Warnung http://www.autoit.de/index.php?page=Attachment&attachmentID=12477&h=a66e524286a93242f5de2c01b1d749150ca3517e aus deinem 1. Thread hier angeschaut. 3 übersprungene Dateien können für eine Firma im Fall des Falles das ein Restore nötig wird das witschaftliche aus bedeuten. Diese Warnung also automatisch mit einem Skript abnicken zu lassen halten ich schon für vorsätzliches ignorieren der Gefahr und der Kunde wird in diesem Fall ohne Probleme bei jedem Gericht Schadensersatz zu gesprochen bekommen. Die 2. Sache es scheint dort eine Lizenzverletzung zu bestehen, was ja auch nicht ohne ist. Ob dies eine echte bzw. nur durch falsche Konfiguration hervorgerufene ist kann und will ich nicht beurteilen. Also noch einmal, besser BackUp Excec richtig installieren als eine ewige Baustelle mit dem Damoklesschwert eines schwerwiegenden Datenverlustesn beim Kunden,

    mfg autoBert

    Einmal editiert, zuletzt von autoBert (7. Februar 2011 um 13:56)

  • Es ist nicht möglich diese Warnmeldung mit "OK" vom Programm selber bestätigen zu lassen er kann sie lediglich schließen lasse und dies bringt uns / mihc nicht weiter!

    Grüße Lupos

  • Edit: gerade habe ich mir die Warnung http://www.autoit.de/index.php?page=Atta…1d749150ca3517e aus deinem 1. Thread hier angeschaut. 3 übersprungene Dateien können für eine Firma im Fall des Falles das ein Restore nötig wird das witschaftliche aus bedeuten. Diese Warnung also automatisch mit einem Skript abnicken zu lassen halten ich schon für vorsätzliches ignorieren der Gefahr und der Kunde wird in diesem Fall ohne Probleme bei jedem Gericht Schadensersatz zu gesprochen bekommen. Die 2. Sache es scheint dort eine Lizenzverletzung zu bestehen, was ja auch nicht ohne ist. Ob dies eine echte bzw. nur durch falsche Konfiguration hervorgerufene ist kann und will ich nicht beurteilen. Also noch einmal, besser BackUp Excec richtig installieren als eine ewige Baustelle mit dem Damoklesschwert eines schwerwiegenden Datenverlustesn beim Kunden,

  • Es ist Richtig installiert und eine Orginal-Softwre mit Lizenz von Symantec!!!
    So nun back to Topic:
    Habe es geschafft einen Dienst zu erstellen der das Programm startet, wie schaffe ich es nun in meinem Script mit der
    @hour ; @min ; @day Funktion
    Das Skript jeden Freitag um 1:00 Nachts zu starten?

    Grüße Lupos

  • Zitat

    Es ist Richtig installiert und eine Orginal-Softwre mit Lizenz von Symantec!!!


    Dann ist es halt nicht richtig konfiguriert, Warnmeldungen sollte man im Regelbetrieb nicht sehen,
    auch nicht bei dem Symatec Dreck.

    Gruß Dietmar

    Achtung Anfänger! :whistling:

    Betrachten des Quellcodes auf eigene Gefahr, bei Übelkeit,Erbrechen,Kopfschmerzen übernehme ich keine Haftung. 8o

  • Eine Möglichkeit:

    [autoit]


    Do
    Until _zeit()
    ;Hier dann dein Code
    Func _zeit()
    If @WDAY = 6 and @hour = 1 and @MIN = 0 and @sec = 0 Then return true ;das Programm ausführen
    return false
    endfunc

    [/autoit]
  • So führt er das Script also mit dem Code jeden Freitag um 1:00 Nachts aus?
    oder muss ich das noch modifizieren?

    Grüße Lupos

    Edit: Ist der Code so richtig?

    Spoiler anzeigen
    [autoit]


    Do
    Until _zeit()

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

    ; Backup Exec 2010 R2 starten
    Run("D:\Program Files\Symantec\Backup Exec\BkupLnch.exe")

    ;Wartet 10 sekunden
    Sleep(10000)

    ; Fenster Warnmeldungen aufrufen
    Send("!f & w")

    ;Wartet 5 Sekunden nach ausführung von SEND Befehl
    Sleep(5000)

    ;Fenster aktive Meldungen aurufen
    Send("!a & aa")
    Send("{Enter}")

    ;Warten bis Fenster Aktiv ist
    WinWaitActive("Symantec Backup Exec™ 2010")

    ; Maus Cursor auf Warnung Positionieren & Doppelklick ausführen
    MouseClick("", 205, 167, 2)

    ; TAB & Enter senden um das Fenster "Auftrag mit Ausnahmen abgeschlossen" zu bestätigen
    Send("{TAB}")

    ;Wartet 6,5 sekunden
    Sleep(6500)

    ;Sendet ENTER Befehl an Offenes Fenster
    Send("{ENTER}")

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

    ;Schließt Symantec BAckup Exec, nach erfolgreichem Ausführen des Programms
    WinClose("Symantec Backup Exec","")

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

    Func _zeit()
    If @WDAY = 6 and @hour = 1 and @MIN and @sec = 0 Then return true;das Programm ausführen
    return False
    EndFunc

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

    Einmal editiert, zuletzt von Lupos (7. Februar 2011 um 15:16)

  • Do Until zeit() macht solange *** bis zeit() = True, und zeit() wird erst True wenn es Freitag ist, 1 Uhr morgens 0 Mim und 0 sek. Also Freitag 1:0:0 in h:min:s.
    Wenn du es so eingestellt hast das es immer läuft, ("Habe es geschafft einen Dienst zu erstellen der das Programm startet"), dann würde es solange nichts machen bis die vorraussetzung erfüllt ist, und zeit() = True ist.

  • Ich glaube wir reden aneinander vobrei, wollte eigentlich wissen ob ich an deiner Funktion noch was ändern muss und wofür steht bei WDAY die 6 für Samstag? Müsste dort nicht eine 5 stehen für Freitag?
    Zusatz: Verstehe das mit den Sternchen nicht!


  • Ich glaube wir reden aneinander vobrei, wollte eigentlich wissen ob ich an deiner Funktion noch was ändern muss und wofür steht bei WDAY die 6 für Samstag? Müsste dort nicht eine 5 stehen für Freitag?
    Zusatz: Verstehe das mit den Sternchen nicht!

    Mit Sternchen meinte er deine Funktion, die um Punkt 1:00 freitags laufen soll
    WDay 6 ist Freitag, da bei AutoIT WDay 1 Sonntag ist

    [autoit]

    Do
    Until _zeit()
    MsgBox(0, "", Es ist jetzt Freitag um genau 1:00 Uhr)
    Func _zeit()
    If @WDAY = 6 and @hour = 1 and @MIN = 0 and @sec = 0 Then return true ;das Programm ausführen
    return false
    endfunc

    [/autoit]
  • Zitat

    @WDAY Numerischer Tag der Woche. Wertebereich: 1 bis 7 = Sonntag bis Samstag

    Quelle: dt. Hilfe
    Deine Umsetzung/Integration von BadBunnys Funktion in Post 14 sieht korrekt aus es sollte noch ein Sleep(10) in die Schleife:

    [autoit]

    Do
    sleep(10)
    Until _zeit()

    [/autoit]

    damit der Prozessor nicht unnötig belastet wird.

    Bin aber immer noch der Meinung dass diese Lösung zu einem Eigentor führen kann fallss die nicht gesicherteten Dateien grossen Wert für euren Kunden haben.

    mfg autoBert

  • Vielen vielen Dank, es funktioniert nun einwandfrei! Danke an alle die mitgewirkt haben ;)

    Ps: @all: Welches Projekt könnte ich mir als nächstes vornehmen um zu üben und ein Crack in AutoIT zu werden?

    Grüße Lupos