Script für Software Pro_Medico

  • Hallo!


    Wir bräuchten ein Script im Zusammenhang mit der Software Pro_Medico bei einem Kunden.


    Es sollen die Computer am Ende des Arbeitstages automatisch heruntergefahren werden und zuvor die Anwendung, falls offen ordentlich beendet werden. Dazwischen taucht an der letzten Station die noch offen ist ein Fenster zur Datensicherung auf. Eigentlich trivial, wenn man sich mit AutoIT so oder so schon auskennt. Japp! Es muss natürlich dann im User-Context laufen.


    Die Kurzfassung:

    - Wenn Anwendung offen, dann ordentllich beenden und nicht nur Prozess killen

    - Wenn beim Beenden der Anwendung, Fenster auf Datensicherung notwendig? Dann bestätigen, Sicherung abwarten

    - Nun alle anderen offenen Anwendungen schließen, gerne mit Kill

    - Rechner herunterfahren


    Wer hat dafür Ressourcen frei?


    Grüße

    Kai Osthoff

  • Ist das wirklich eine Anfrage für Gegenleistung?

    Warum ich Frage:

    1. Müsste mit ProcessClose() gehen (killen wäre ProcessTerminate()) aber korrigiert mich wenn ich mich hier irre. Diese Annahme war Falsch. Es ist WinClose()

    2. Könnte man mit einer Abfrage nach dem Fenster hin bekommen, bei der Bestätigung bin ich mir gerade nicht sicher. Aber Sicherung abwarten sollte über While ProcessExists() gehen (ich gehe davon aus das eine separate exe dafür genutzt wird).

    3. wird über 4. normalerweise automatisch gemacht, wenn noch offene Programme da sind.

    4. Wäre Shutdown()


    Das Programm dann über den Taskplaner zur gewünschten Uhrzeit ausführen lassen.

  • Wenn beim Beenden der Anwendung, Fenster auf Datensicherung notwendig? Dann bestätigen, Sicherung abwarten

    Ich kenne die Software nicht, könnte mir aber vorstellen, dass sie auch über eine kommandozeilengesteuerte Datensicherung verfügt (bei guter Software ist das Standard). Insofern würde ich dort einen Task einrichten, der all das übernimmt. Da brauchst du nicht mal irgendein Programm zu schreiben.

  • BugFix ist leider nicht so. Deshalb die Anfrage.

    Moombas ja. Vermutlich es ja eine Kleinigkeit, aber nicht für alles hat man selbst Zeit! :) Es ist leider eine Anwendung und keine separate EXE. Die Anwendung ist da nicht besonders "modern".


    Das Skript soll dann zu einem späteren Zeitpunkt zentral ausgelöst werden, z.B. wenn sich ein Zustand in Loxone ändert oder eben z.B. über einen Zustand im Netzwerk. Das wäre egal.

  • Support ist zu viel gesagt und das alles geschieht ohne Garantie oder Haftung! Alles auf deinen Angaben basierend und ohne jedes Recht auf Richtigkeit.

    Nutzung (incl. Generierung der Exe) und Tests sind alle in Eigenverantwortung durchzuführen.


    Siehe Kommentare!

  • Wow! Danke fürs erste.


    Erster Test. Das Fenster muss in den Vordergrund geholt werden, damit "ENTER" funktioniert.


    In der Doku finde ich den Befehl winactivate der mich zum Ziel führen könnte? Problem: Den Namen des Fensters herausfinden, der kann sich ja ständig in der Applikation verändern.

  • Wüsste nicht das es geht per Platzhalter, ggf. aber versuch mal folgende Änderung (ab Zeile 7):


    AutoIt
    Global Const $Handle = FindWindowHandle()
    WinClose($Handle) 
    sleep(5000) 
    if ProcessExists($ExeName) Then 
        winactivate($Handle)
  • statt den send Befehl in Zeile 10 wäre vielleicht wenn es den bei dem Programm geht


    ControlClick('Warnung', 'OK', 'Button01')


    besser.

    Button01 müsstest du noch versuchen mit dem AutoIt Window Info auszulesen den Namen findest du dann bei ClassnameNN


    Edit : irgendwie ist nach dem bildhochladen die hälfte vom Text verschwunden den ich geschrieben habe ^^ ist mir grad erst aufgefallen beim nochmal drauf schauen

    Manche Programme zeigen dort in dem Fenster Garnichts an aber vielleicht hast du ja glück.

    :)

    aber diese Methode zum klicken eines Buttons ist sicherer in der Ausführung.



  • Cool! Danke Euch.


    Ich habe jetzt gerade mal alles einmal "durchgeklickt".


    Es kommt nun zu zwei Fenstern, die ich noch bearbeiten muss.


    1. LetzterUser - diese Abfrage kommt nur, wenn ich eben wirklich der letzte User bin, da will ich dann JA klicken

    1a. Falls ich ja geklickt habe kommt dann DatensicherungStarten - da muss ich den Button in der Mitte drücken








    Erstaunlich was mit AutoIT geht! :) Danke für Eure Unterstützung.

  • WinWaitActive('Informationen')

    ControlClick("Informationen", "&Ja", "Button1")

    WinWaitActive('System / Datenbanksicherung')

    ControlClick("System / Datenbanksicherung", "&Datenbanksicherung starten", "TcxButton1")


    müsste genauso klick bar sein laut den daten die du gepostet hast.