Kann man ein AutoIT Hauptskript vor Popup Fenstern aus Tool-internen Nebenskripts schützen?

  • Hallo Mitglieder, hier mal ne "Serveranfrage" ^^

    (Ich fand den Namen cool!)

    Ich bin recht neu (Noob) in der AutoIT-Welt, hab aber nur mit Youtube-Tutorials und Lesen von Forumsbeiträgen schon ein sehr hilfreiches Skript für eine Auto-PDF-Generierung mit diversen Vorbedingungen in unserem CAD-Tool geschrieben. Die Anwender sind von der Effizienzsteigerung durch den automatischen Ablauf der Routinebefehle begeistert :D

    AutoIT ist schon was Feines! :)

    Jetzt die Frage:

    Weiß jemand ob es einen Befehl oder ein nettes kleines Skript gibt, um Einmischung von parallel im Hintergrund laufender Prozesse/Skripte in meinen Hauptprozess zu unterbinden?

    Konkreter: Ich starte das Hauptskript, welches auch wunderbar läuft, dann bei etwa einem 10tel des Programmes starte ich recht früh parallel ein CAD-Tool eigenes Skript, welches einen besonderen PDF Prozess anstößt, der im Hintergrund vor sich hin arbeitet, während das Hauptskript weiter läuft.

    Manchmal wird das Neben-Skript aber vom Timing her viel zu früh fertig und lässt eine vordergründige Popup Benachrichtigung raus, die den laufenden Hauptskript-Prozess stört und manchmal, wenns dumm läuft, je nach Timing vom Nebenskript, zB meine PDF-Benamungs- oder Pfadeingabe-Vorgänge ungefragt abbricht :thumbdown:

    Ich möchte daß das Nebenskript sich nicht in den Vordergrund drängt und im Hintergrund verbleibt, so lange mein Hauptskript läuft.

    Ich habe so das Gefühl, ich muß meinen gefühlt gigantisch langen Hauptcode mit mehreren Unterfunktionen in eine While Schleife mit Und-Bedingung packen ;(

    Also während das Hauptskript läuft und das Nebenskript nachträglich zusätzlich aktiviert wird, warten auf Popup Fenster vom Nebenskript. Wenns erscheint, sofort schließen, da es nur ne Infobox ist.

    Gibt es eine Art Prioritätensetzung für laufende Prozesse?

    Dann würd ich gern das tool-interne Nebenskript auf Prio B (oder in so ne Art Ignorier-Modus) und das Hauptskript von AutoIT auf Prio A setzen. Solange das Erwachsenenprogramm spricht, soll das Kindprogramm es nicht unterbrechen und schweigen.

    Was ich NICHT möchte, was aber natürlich problemlos gehen würde, ist es das Nebenskript zum Schluss erst anzutriggern oder ab dem ersten 10tel des ganzen Programmes zu starten und dann ewig darauf zu warten, weil das Hauptskript PAUSIERT und auf das Popup Event vom Nebenskript wartet. Das ist nicht effizient und erhöht die Wartezeit für den User immens und unnötig. Ich bevorzuge die effiziente Lösung mit Parallel-Prozess zur frühst möglichen Zeit gestartet, damit beide Skripte ungefähr zeitgleich enden.

    Ich hoffe ihr lest gern, denn ich schreib wohl gern viel :P

    Bin gespannt ob mir noch zu helfen ist? ^^

  • Hi,

    zwei Scripte "nebeneinander" an einer Aufgabe arbeiten zu lassen, führt genau zu dem in deinem Beispiel gezeigten Ergebnis.

    Frag dich mal selbst, ob du irgendein Programm kennst, das auf diese (deine) Art und Weise arbeitet....

    Damit sollte die Frage schon beantwortet sein!

    Also während das Hauptskript läuft und das Nebenskript nachträglich zusätzlich aktiviert wird, warten auf Popup Fenster vom Nebenskript. Wenns erscheint, sofort schließen, da es nur ne Infobox ist.

    Genau so wird das "richtig" gemacht!

    Also los!

    Btw. ist es wesentlich einfacher zu helfen, wenn man die Scripte auch lesen kann! Glaskugeln ist heutzutage absolut nicht mehr "hip".

    Wenn du demnächst eine Frage hast, häng die Scripte an...

  • Hallo Serveranfrage,

    vielleicht ist auch eine Möglichkeit über die einfache Art in AutoIt in INI-Dateien zu schreiben (siehe IniRead, IniWrite) . Darüber können ggf. die beiden Programme ihre Zustände austauschen und entsprechend handeln.

    Viele Grüße

    Carsten

  • Danke für eure Rückmeldungen.

    Ich habe mich des Problemes angenommen und die störende Sleep Time im entsprechenden Bereich meines Hauptprogrammes entfernt, wo das (Fremd-Tool-Interne-Nebenskript, auf das ich leider keinen Einfluss habe, störte).

    Zusätzlich habe ich mehr mit WinWait, WinWaitActive, WinExist und den ganzen anderen Win Befehlen kombiniert mit IF gearbeitet, was dem gesamten Programmablauf mehr Stabilität gegeben hat.

    Danach ging es. Schätze es war nicht die beste Lösung, aber für meine Zwecke funktioniert es nun :)

    Mein Skript ist zu lang um es hier rein zu machen. Zusätzlich habe ich jeden Befehl kommentiert.

    Das wär zu viel firmeninterne Info hier, kann ich nicht machen, sorry.

    Das nächste Mal versuche ich eine Art Beispiel anzuhängen ;)