Problem mit PowerPoint Slideshow beenden

  • Hallo Zusammen,

    ich versuche folgendes Projekt zu realisieren und bin auf ein Problem gestoßen.

    Gegeben:

    Eine PowerPoint Präsentation (*.PPSX) läuft auf einem Touchscreen in Dauerschleife. Die Präsentation (auf´s wesentliche reduziert) ist unten im Anhang "Dojo1.zip", um den Fehler nachstellen zu können.

    Da die User aus der Master-Präsentation auch andere Präsentationen aufrufen und sogar die Master-Präsentation beenden können müssen, soll folgendes umgesetzt werden.

    Aufgabe:

    Das Skript (hängt im Autostart) soll nach einer Leerlaufzeit von X Minuten die Master-Präsentation in den Vordergrund holen.

    Hat ein User die Master-Präsentation beendet, soll das Skript dies erkennen und die Master-Präsentation starten.
    Damit soll sicher gestellt werden, dass immer die Master-Präsentation auf dem Bildschirm läuft.
    Aktuell sind 10 Minuten Leerlaufzeit angedacht.
    =>Diese Vorgaben erfüllt das bestehende Skript ohne Probleme zu machen.

    Umsetzung:

    Code: config.ini
    [PPSX_path]
    PPSX_path1 = [PFAD]
    
    [PPSX_name]
    PPSX_name1 = DATEI.ppsx
    
    [IdleTime]
    IdleTime1 = 600

    Ich prüfe den Fenster-Titel ob dieser vorhanden ist, falls nicht, starte ich die Master-Präsentation.
    Das funktioniert auch gut, weil jede Präsentation einen anderen Titel hat.

    Problem:

    Wenn das Skript die Master-Präsentation einmal gestartet und/oder in den Vordergrund geholt hat, kann diese nicht mehr über ESC beendet werden.
    Beendet man die Master-Präsentation über ESC wird Sie 1 Sekunde später sofort wieder gestartet und läuft erneut los.
    Das Problem tritt auch auf, wenn das AutoIT-Skript vorher komplett beendet worden ist und man dann erst versucht die Präsentation mit ESC zu beenden.

    Es hilft nur, die Master-Präsentation über den TaskManager oder die Taskleiste zu beenden.


    =>TaskManager/Taskleiste ist keine Option, da der User auch über den Touchscreen die Präsentation beenden können muss.
    =>Starte ich die Präsentation ohne das Skript, kann ich Sie ohne Probleme mit ESC beenden.



    Getestet:
    Auf folgenden Systemen habe ich das Skript getestet immer mit dem selben Ergebnis/Problem.
    -Windows 7 Enterprise x64 und Office 2010
    -Windows 10 Enterprise x64 und Office 2016

    An der Master-Präsentation scheint es nicht zu liegen, um das auszuschließen habe ich die Datei mehrfach von Grund auf neu erstellt.

    Ziel:
    Der User soll die Master-Präsentation mit ESC beenden können, da Sie ja eh nach x Minuten Leerlauf von alleine wieder neu startet.
    Das Skript hängt im Autostart und läuft den ganzen Tag mit.


    Zum Testen habe ich in dem Dojo1.zip die Präsentation angehängt.

    Dojo1.zip


    Tipps und Lösungsvorschläge sind willkommen :)

    Einmal editiert, zuletzt von bam176 (26. Juli 2018 um 15:22)

  • Beendet man die Master-Präsentation über ESC wird Sie 1 Sekunde später sofort wieder gestartet und läuft erneut los.

    wolltest du nicht genau dies erreichen 8o

    Hat ein User die Master-Präsentation beendet, soll das Skript dies erkennen und die Master-Präsentation starten.

    Gratuliere, du hast es erfolgreich gelöst. Ohne eine Demo.ppx bei der das Problem auftritt, kann man dir wohl nicht helfen.

    mfg (auto)Bert

  • Hallo autoBert

    Ich wollte erreichen dass die Master Präsentation nach z.B.10 Minuten wieder in den Vordergrund geholt wird, wenn der Rechner 10 Minuten im Leerlauf ist. (=Keine Eingaben innerhalb der letzten 10 Min gemacht worden sind)

    Das funktioniert auch super.

    Ich kann Die Präsentation nur nicht beenden/verlassen.

    Die Demo.ppsx ist als Anhang im Beitrag bereits eingefügt Dojo1.zip. Das habe ich auch rein geschrieben.


    An dem Rechner hängt ein Touchscreen über den die User sich Infos anschauen, aus der Master Präsentation andere Präsentationen öffnen oder auch mal ins Intranet gehen können. Für das Letzte müssen Sie raus aus der Präsentation und rein in den IE. Das Ist nur ein Beispiel es müssen auch andere Anwendungen zugänglich sein die ich nicht in der Präsentation verlinken kann.

    Ich will mit dem Skript verhindern, dass der nächste User z.B. nur das Intanet sieht und nicht das Info-Board (=Master Präsentation). Das liegt leider in der Natur der Anwender, dass Sie das Zeug einfach stehen lassen wie es ist und das Info Board (Master Präsentation) nicht wieder starten.

    Jeder Anwender soll die gleiche Ausgangsbasis haben wenn er an das Info-Board kommt.

    4 Mal editiert, zuletzt von bam176 (26. Juli 2018 um 00:12)

  • So:

    läuft es zumindest als Exe bei mir. Im Else Zweig hat er bei mir (ohne die Änderung) 4 bis 6 Instanzen von PPgeöffnet. Singleton habe ich eingefügt, damit nur 1 Instanz des Starterprogramms läuft, es dauert ja 10 min. bis die Präsentation gestatet wird. Um sofort zu starten kannst du $time mit 1 initialisieren und nach der Do ... Until

    Code
    If $time <> $PPSX_IdleTime Then $time = $PPSX_IdleTime

    einfügen.

    mfg (auto)Bert

    2 Mal editiert, zuletzt von autoBert (26. Juli 2018 um 01:43)

  • autoBert
    Vielen Dank für deine Unterstützung. Deine Änderungen haben das Problem gelöst.
    Dass mir mein Else-Zweig gleich mehrere Instanzen öffnet, habe ich nicht heraus bekommen. :Face:Manchmal sieht man den Wald vor lauter Bäumen nicht...:Face:

    Code: von autoBert
    Else
                $Pid = ShellExecute($PPSX_path & $PPSX_name, "", "", "Open", @SW_MAXIMIZE)
                ConsoleWrite($Pid & @CRLF)
                Do
                    $pState = WinGetState("PowerPoint-Bildschirmpräsentation - " & "[" & $PPSX_name & "[Schreibgeschützt]]")
                    Sleep(100) ;===> schont Prozessor Auslastung
                Until $pState

    Könntest du mir noch erklären warum du hier den ConsoleWrite eingebaut hast?