Skript mit F10 starten und mit F9 beenden

  • Moin,

    ich habe einen Bildschirm, auf welchem ein PC im Kiosk modus hängt und dieser eine Monitoring website anzeigt. Diese Website hat mehrere Dashboards, welche ich mit einem ganz einfachem Autoit Skript, mit hilfe von einfachen MouseMove und MouseClick befehlen durchschalte. Dies funktioniert auch ohne Probleme.

    Zur Info das Skript wird immer automatisch über die Windows Aufgaben Planung gestartet, sobald der pc hochfährt und sich der Kiosk User anmeldet.

    Nun zu meinem Problem: Ich würde gerne das Skript mit der F9 Taste beenden können und mit der F10 Taste daraufhin wieder starten können. Nur irgendwie funktioniert das leider nicht so wie ich mir das vorgestellt habe.

    Einmal editiert, zuletzt von SOLVE-SMART (12. Februar 2024 um 19:11)

  • Punkt 1: Dein Skript wie du es hier gepostet hast ist unvollständig, wir müssen schon eine funktionierende Variante hier haben. (kein Wend, kein EndFunc, kein Endif,...).

    Punkt 2: Ich empfehle anstatt der MouseMove geschichten hier auf evtl. eine direkte Webseitensteuerung zu gehen. Oder wird die Webseite nicht in einem Browser angezeigt?

  • Um erstmal dein Hotkey Problem zu lösen, würde ich es so umsetzen.

    Einmal editiert, zuletzt von SOLVE-SMART (12. Februar 2024 um 19:12)

  • nun ja. nach F10 ist halt schluss, wenn du das script beendest.😉

    ich weiß nicht den Grund oder deine Zielsetzung, aber damit der Hotkey für Start funktioniert, muss dein script laufen

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • mit der F9 Taste beenden können

    Was soll wirklich passieren, wenn du F9 drückst?

    Meist ist es einfacher, wenn du möglichst genau beschreibst, was wann und warum geschehen soll. Nicht immer ist der eigene Lösungsweg auch der beste.

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Moin,

    ... Diese Website hat mehrere Dashboards, welche ich mit einem ganz einfachem Autoit Skript, mit hilfe von einfachen MouseMove und MouseClick befehlen durchschalte. Dies funktioniert auch ohne Probleme.

    Wie Moombas schon sagte, wenn es ohne Probleme funktioniert, muss es im Original deutlich anders aussehen. Beruhen die Fehler im eingestellten Beispiel auf mangelnder Erfahrung mit AutoIt oder sind die Auslassungen gewollt?

    (#Persistent erinnert mich stark an AutoHotkey).

  • Und um das ganze hier einmal mit einem funktionierendem minimal Beispiel zu füllen:

    Einmal editiert, zuletzt von Moombas (14. Februar 2024 um 08:13)

  • Punkt 1: Dein Skript wie du es hier gepostet hast ist unvollständig, wir müssen schon eine funktionierende Variante hier haben. (kein Wend, kein EndFunc, kein Endif,...).

    Punkt 2: Ich empfehle anstatt der MouseMove geschichten hier auf evtl. eine direkte Webseitensteuerung zu gehen. Oder wird die Webseite nicht in einem Browser angezeigt?

    Zu punkt 1: Oh stimmt du hast recht, hab ich wohl irgendwie vergessen

    punkt 2: ja genau die Website wird über den Browser angezeigt. Wie funktioniert denn eine solche Webseitensteuerung?

  • nun ja. nach F10 ist halt schluss, wenn du das script beendest.😉

    ich weiß nicht den Grund oder deine Zielsetzung, aber damit der Hotkey für Start funktioniert, muss dein script laufen

    ja das problem ist mir auch erst jetzt klar geworden. Es gibt nicht zufällig einen Befehl der das Skript nur pausiert und nicht gleich beendet?

  • Siehe dazu den neuen Crashkurs von SOLVE-SMART : AutoIt WebDriver Crashkurs

    Lieben Dank Moombas 🤝 , made my day so far 😅 .
    (So war es gedacht.)

  • Und um das ganze hier einmal mit einem funktionierendem minimal Beispiel zu füllen:

    Danke das hat jetzt für mich so sehr gut funktioniert!


  • Das Else kannst du weg lassen DivineFaith, das war wie gesagt nur zum Testen/Veranschaulichen. Und das Sleep sitzt an der falschen Stelle (muss vor das Wend)

    Ich empfehle dennoch mal an deiner Stelle das mit dem Webdriver, das SOLVE-SMART netterweise zu diesem Zweck einmal erläutert hat, umzubauen, einfach weil du dann auch unabhängig von Monitorauflösungen und sonstigen Faktoren bist, die zum Beispiel die Position der relevanten Felder beeinflusst oder ob die Webseite/Unterseite überhaupt geladen werden kann. Zudem sieht man dann keinen Cursor umherhuschen, was das ganze dann auch für den Betrachter etwas professioneller macht und teilweise ggf. sogar schneller, weil du nicht zwangsläufig 2Sekunden warten musst, sondern einfach wartest bis das entsprechende Element/Seite fertig geladen wurde.

    Ich vermeide best möglich MouseClick und dein aktuelles Skript kann auch dabei noch optimiert werden, da MouseClick auch Koordinaten unterstützt:

    Um aber weitergehend helfen zu können, müsste man die Webseite kennen bzw. ich selber nutze (bisher, mangels fehlender Anforderung) den Webdriver nicht, kann daher dabei dann nicht wirklich helfen.

  • Das Else kannst du weg lassen DivineFaith, das war wie gesagt nur zum Testen/Veranschaulichen. Und das Sleep sitzt an der falschen Stelle (muss vor das Wend)

    Ich empfehle dennoch mal an deiner Stelle das mit dem Webdriver, das SOLVE-SMART netterweise zu diesem Zweck einmal erläutert hat, umzubauen, einfach weil du dann auch unabhängig von Monitorauflösungen und sonstigen Faktoren bist, die zum Beispiel die Position der relevanten Felder beeinflusst oder ob die Webseite/Unterseite überhaupt geladen werden kann. Zudem sieht man dann keinen Cursor umherhuschen, was das ganze dann auch für den Betrachter etwas professioneller macht und teilweise ggf. sogar schneller, weil du nicht zwangsläufig 2Sekunden warten musst, sondern einfach wartest bis das entsprechende Element/Seite fertig geladen wurde.

    Ich vermeide best möglich MouseClick und dein aktuelles Skript kann auch dabei noch optimiert werden, da MouseClick auch Koordinaten unterstützt:

    Um aber weitergehend helfen zu können, müsste man die Webseite kennen bzw. ich selber nutze (bisher, mangels fehlender Anforderung) den Webdriver nicht, kann daher dabei dann nicht wirklich helfen.

    Ah ja das mit der unabhängigen Monitorauflösung wäre wirklich super ^^ Dann guck ich mir aufjedenfall mal das Tutorial an, Danke!


    Die Monitoring Website ist Redgate

  • Hi DivineFaith ,

    ich kann Moombas nur beipflichten und dafür werben für solche Aktionen den WebDriver zu nutzen.
    Dafür habe ich das Projekt "au3webdriver-boilerplate" eingerichtet => soll den Einstieg mit dem Thema erleichtern 🤞 .

    Allerdings/Aber:
    Wenn du deine "Lösung" nicht ausbauen musst/willst, wenn es für dich stabil genug läuft und du auch nicht die Zeit hast eine gewisse Lernkurve zu bewältigen, dann bleibe ggf. einfach bei dem was du hast. Dies wollte ich der Fairness halber zumindest kurz anmerken. Denn nicht jeder Anwendungsfall in diesem Umfeld (Web-Kram) rechtfertigt den Einsatz des WebDriver meiner Meinung nach.

    Nichtsdestotrotz:
    Mächtiger, weniger Fehler anfällig (da robuster) und flexibler ist die Verwendung des WebDriver (Protokolls).

    Viele Grüße
    Sven

  • Moin,

    ob mit oder ohne Webdriver, für mich ist noch offen, wann und wie auf F9/F10 reagiert werden soll.

    In den bisher eingestellten Beispielen wird der aktuelle Schleifendurchlauf 'in aller Ruhe' beendet. Das ursprüngliche Beispiel aus Beitrag #1 enthält mehrfach

    AutoIt
    ; Pause for 2 Minutes for changing the Dashboard
    			Sleep(120000)

    Das könnte dann schon ein Weilchen dauern, bis das 'Durchschalten' durch die Dashboards beendet wird.

    DivineFaith, soll das so sein? Wenn nicht, was genau soll geschehen?

  • Moin,

    ob mit oder ohne Webdriver, für mich ist noch offen, wann und wie auf F9/F10 reagiert werden soll.

    In den bisher eingestellten Beispielen wird der aktuelle Schleifendurchlauf 'in aller Ruhe' beendet. Das ursprüngliche Beispiel aus Beitrag #1 enthält mehrfach

    AutoIt
    ; Pause for 2 Minutes for changing the Dashboard
    			Sleep(120000)

    Das könnte dann schon ein Weilchen dauern, bis das 'Durchschalten' durch die Dashboards beendet wird.

    DivineFaith, soll das so sein? Wenn nicht, was genau soll geschehen?

    Ja da hast du recht, das würde noch etwas dauern, bis das skript beendet wird.
    habe das skript jetzt angepasst und nun pausiert es das skript bevor das nächste Dashboard dran kommt.


    Habe einfach die einzelnen Dashboards jeweils in eine If schleife gehangen und falls ich "F9" drücke und die Variable $Run auf False setzte, wird das nächste Dashboard nicht mehr angezeigt.

    Wenn ich "F10" Daraufhin drücke startet die While schleife von vorne, das ist mir aber vollkomen ausreichend.