MsgBox ohne skript Pause

  • Hallo zusammen,

    ich habe ein Skript, das regelmäßig prüft, ob ein System Offline oder Online ist (über die Weboberfläche des Systemmonitorings). Da dem Kunden allerdings die Info per Email nicht reicht und er auf seinem Monitor per Popup informiert werden will, suche ich nach einer Möglichkeit, das umzusetzen. Autoit hat ja nun leider die Eigenart, dass eine MsgBox die Ausführung des Skriptes pausiert, bis das Popup verschwunden ist.

    Ist es irgendwie machbar, dass das Skript auch bei einem Popup Fenster im Hintergrund weiter prüfen kann?

    Hier ein CodeSnippet zu dem Thema:


    Vielen Dank vorab für eure Hilfe und LG,
    der Robert

  • Hey alpines und lieben Dank für deinen Vorschlag.

    Den Gedanken hatte ich auch schon, allerdings werden in dem Skript mehrere Systeme überwacht und deshalb wäre es einfacher pro Ausfall ein eigenes Popup zu haben, statt einem GUI, das für jeden Ausfall überschrieben werden müsste.

  • Von hier: https://www.autoitscript.com/forum/topic/15…comment-1149008


    Ich habe es nicht getestet!

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Hey alpines und lieben Dank für deinen Vorschlag.

    Den Gedanken hatte ich auch schon, allerdings werden in dem Skript mehrere Systeme überwacht und deshalb wäre es einfacher pro Ausfall ein eigenes Popup zu haben, statt einem GUI, das für jeden Ausfall überschrieben werden müsste.

    Du kannst auch für jeden Ausfall eine neue GUI erstellen. Das ist dir ja freigestellt. Ob das sinn ergibt, steht auf einem anderen Blatt geschrieben. Alternativ (meist meine Vorzugsweise) eine GUI strukturiert aufbauen, dass alle Informationen in einer GUI dargestellt werden können, und alles auf einem blick ist, ohne x-Popups durchklicken zu müssen, um zu wissen was Sache ist...

    Grüße Yaerox

    Grüne Hölle

  • Du meinst also, eine GUI zu verwenden, die sagen wir eine listview drin hat und in dieser listview dynamisch die Systeme einträgt, wann sie ausgefallen sind und wie sie heißen? und sobald sie wieder laufen, die logfile schreiben und aus der übersicht verschwinden? auch eine durchaus interessante idee. darauf bin ich noch nicht gekommen

  • Du meinst also, eine GUI zu verwenden, die sagen wir eine listview drin hat und in dieser listview dynamisch die Systeme einträgt, wann sie ausgefallen sind und wie sie heißen? und sobald sie wieder laufen, die logfile schreiben und aus der übersicht verschwinden? auch eine durchaus interessante idee. darauf bin ich noch nicht gekommen

    Das ist ja immer die Frage des Anwendungsfalles ... ich habe eine Prozessüberwachung bei der ich eine GUI dauerhaft offen habe, dort dann einfach sinngemäß 2 vertikale Trennlinien gezogen habe und alles was so anfällt in ein Input (Multiline)-Control schreibe. Weil an dieser Stelle kommt massiv viel Text, den ich aber brauche und kopieren muss.

    Grüße Yaerox

    Grüne Hölle

  • Habe es jetzt so gelöst:


    Allerdings reagiert er nicht auf den "Schließen" Button im Fenster. Any Guesses, warum?

    LG

  • Alternativ tut es auch eine kleine GUI die per OnEventMode läuft.

    Der OnEnventMode verhält sich während der MessageBox-Anzeige genauso wie der GuiGetMsg-Mode.

    Man könnte aber eine externe Exe mit Run starten, welche die Fehlermeldung ausgibt.

  • Die .exe war eine super Idee! Danke dafür!

    Das hier ist das Hauptprogramm:

    Spoiler anzeigen


    und die Msg.exe wird dann entsprechend ausgeführt:

    Spoiler anzeigen

    So funktioniert es genau so wie ich es wollte :D Danke euch allen vielmals!

    Einmal editiert, zuletzt von DasIch (8. Juli 2015 um 16:13)

  • Sehr viel einfacher geht das so:

    AutoIt
    ExecuteSeperated("MsgBox(0, 'Test', 'yolo', 5)")
    
    
    Func ExecuteSeperated($sCodeLine)
            #pragma compile(AutoItExecuteAllowed, True)
    	Return Run(@AutoItExe & ' /AutoIt3ExecuteLine "' & $sCodeLine & '"')
    EndFunc   ;==>ExecuteSeperated

    LG
    Christoph :)

    3 Mal editiert, zuletzt von BinDannMalWeg (8. Juli 2015 um 18:21)

  • Ich hab nicht davon gesprochen die HauptGUI im OnEventMode zu betreiben sondern eine kleine MsgBoxGUI zu erstellen die im OnEventMode läuft.

    Dies würde ich gerne sehen wie beide GUI's auf Eingaben reagieren ohne sich gegenseitig zu blockieren.

  • Dies würde ich gerne sehen wie beide GUI's auf Eingaben reagieren ohne sich gegenseitig zu blockieren.

    Hier ein Beispiel:

    Spoiler anzeigen

    LG
    Christoph :)