none
Script für Dauer Browser Durchlauf - Tasteneingabe zum pausieren RRS feed

  • Allgemeine Diskussion

  • Hallo,

    für die Arbeit schreibe ich momentan ein kleines Powershell Script. Die Anforderung sind:

    - Autostart

    - jede Seite im Vollbild

    - alle paar Sekunden öffnet sich eine neue Seite aus einer Liste. -> Dauerhaft

    - mit Tastendruck(Space-Taste) soll man den Timer anhalten und die aktuelle Seite anhalten, Bei weiterem Klcik soll der Timer mit dem Durchlauf weitermachen

    Die ersten Punkte habe ich bereits umsetzen können, aber am letzten scheitere.

    Ich muss nen weiteren Prozess/Thread starten, um die Eingabe und den Dauerlauf machen zu können. Es gibt mehrere Arten von Parallelisierung. Welche nehme ich da und vorallem, wie setze ich das um? Mein Problem ist, das ich nur dann eine Eingabe machen kann, wenn das Terminal aktiv ist, was aber kaum der Fall ist, da die Browser immer im Vollbildmodus sind.

    Wäre super, wenn mir jemand mir bei meinem letzten Schritt behilflich sein könnte. Aktueller Code hänge unten an. Ist aber chronoloisch nicht richtig, dass weiß ich. Dient nur um herauszufinden wie sich die ganzen Elemente verhalten. Habe zuvor nie mit Powershell gearbeitet.

    Ach und wenn es eine Möglichkeit gibt, alle diese Bedingungen mit einem Chrome Fenster zu lösen, dann es mir bitte.

    #Test Key press
    
    #Test Browser start, Arrays, loop, fullscreen and sleep
    
    $Browser1=new-object -com internetexplorer.application
    $Browser2=new-object -com internetexplorer.application
    $Browser3=new-object -com internetexplorer.application
    $browserArr = @()
    
    $browserArr = $browserArr + $Browser1
    $browserArr = $browserArr + $Browser2
    $browserArr = $browserArr + $Browser3
    
    $browserArr[0].navigate2("https://www.google.com")
    $browserArr[1].navigate2("https://www.spiegel.com")
    $browserArr[2].navigate2("https://www.heise.de")
    
    $i=0
    while($true){
    	Start-Sleep -s 5
    	$browserArr[$i].visible=$false
    	$i++
    	$i = $i % $browserArr.length
    	$browserArr[$i].visible=$true
    	$browserArr[$i].Fullscreen=$true
    }
    
    
    
    
    

    mfg werdas34


    Freitag, 6. September 2019 19:16

Alle Antworten

  • Auch wenn Du einen großen Teil der Aufgabe schon mit Powershell-Mitteln lösen konntest, heißt das ja nicht zwingend, dass Powershell auch die wirklich beste Lösung/Technologie für Deine Aufgabenstellung ist. Das ist ungefähr so wie mit dem Thema "Hammer oder Schraubendreher für Nagel oder Schraube". Natürlich bekommst Du auch mit einem Hammer eine Schraube in eine Holzwand ...  ;-)

    Ich würde Dir empfehlen, auch mal ein Stück weit über den Tellerrand zu schauen und eventuell andere Scripting-Technologien zu bewerten. Autohotkey oder AutoIt sind meiner Meinung nach besser geegnet, wenn es darum geht, eine Interaktion zu ermöglichen, obwohl das Script/die Anwendung keinen Focus hat. Beide Tools haben bereits eingebaute Mechanismen, Tastatur- und Maus-Aktionen auszuwerten und entsprechend darauf zu reagieren.


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Samstag, 7. September 2019 12:40
  • Ich muss erst mal schauen, ob meine Firma AutoHotKey unterstützt. Wollte es nzuerst mit Python lösen, aber ohne das verwenden von Dritt-Modulen schlicht nicht möglich.

    Jetzt eben mit Powershell, da es auch recht viel kann. Scheint aber schwieriger zu werden als gedacht. Dachte mit start-job und receive-job könnte ich es eventuell lösen. Komme da aber nicht voran. :D

    Ich hoffe jetzt mal, dass die Firma AutoHotKeys unterstützt, sonst wirds schwierig.

    Samstag, 7. September 2019 14:33
  • Autohotkey und AutoIt sind freie Software und Du kannst die Skripte auch zu ausführbaren Dateien  kompilieren (*.exe).

    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Samstag, 7. September 2019 15:09
  • Auch davon solltest du die Finger lassen, deine Lösung liegt total daneben.

    Erstelle eine HTML-Seite und lass dort Java-Script laufen (geht auch mit Notepad).
    Die Seiten, die du im Dauerlauf anzeigen willst, zeigst du in einem iFrame.
    Oberhalb des iFrame zeigst du einen Button an, der auf das Click-Ereignis reagiert.
    Dieser toggelt eine Variable mit "MyVar = not MyVar;". In abhängigkeit von True/False kannst du den Button-Text auch mit "Start"/"Stop" belegen.
    Per Timerevent arbeitest du im Javascript deine Anzeigeliste ab und änderst die Url des iFrames.
    Dies führt zum Wechsel der Seite im iFrame. Kein neuer Tab oder neues Fenster.
    Die Variable brauchst du also nur abfragen, ob die Wechselaktion durchgeführt werden soll oder nicht.

    Eine html-Datei lässt sich in jedem Browser aufrufen, sogar im Safari oder Android-Browser (also Tab/Handy).

    Außerdem bist du nicht vom IE abhängig.
    Übrigens: alle Browser bieten per F12 auch eine Debug-Möglichkeit für JavaScript.

    Samstag, 7. September 2019 16:18
  • BOfH-666:

    Du kennst dich mit .exe Dateien aus. Also die Datei läuft vollkommen eigenständig. Sie braucht keine Extras, oder? Und kann sie dann weiterhin eine Datei einlesen? Die Daten liegen in .JSON vor.

    bfuerchau:

    Da schließt sich der Kreis. Sogar mit dem sellben Argumentation. Habe dies auch mit JS probiert, da vollkommen unabhängig von BS und Browser.

    Die Firma möchte es aber möglichst in Chrome haben und es soll nur auf einem Monitor laufen. Also ist Unabhängigkeit irrelevant.

    Aber nach dem Motto, nur weil man nicht muss, kann mans trotzdem so machen.

    Gescheitert bin ich daran, das paar der Seiten nicht als Frames angezeigt werden wollen.

    Und bei deinem Ansatz, wäre das Problem, dass die Seiten jedesmal neu geladen werden müssen. Da es einige Seiten gibt, die aufwendiger sind und schon mal 20 bis 30 Sekunden Ladezeit haben, ist dies nicht optimal und performancemäßig betrachtet nicht gut. Da wären einzelne Tabs bei denen man hin und her springt besser, da bereits vorgeladen.

    Samstag, 7. September 2019 20:27
  • Auch dies lässt sich mit den normalen JavaScript-Mechanismen lösen.
    In meiner Web-Anwendung lade ich diverse Popup-Windows vor, setze die Url und zeige diese bei Bedarf an.
    Da ich für jedes Popup eine Variable im Array habe, behalte ich auch entsprechenden Zugriff darauf und kann dei Fenster verstecken und wieder anzeigen.
    Die Fenster können ene Titelzeile haben und dann verkeinert, vergrößert und verschoben oder auch bei Bedarf neu geladen werden.

    Der Vorteil ist eben, dass jedes Fenster auf dem Inhalt bleibt, den der User angefordert hat.
    Ab und an wird dort auch gerne mal eine andere Web-Seite eingeblendet. Da haben wir noch mit Keiner Probleme bekommen.

    https://www.stichpunkt.de/html/popup.html

    Und mittels deines Timers kannst du ebene verschiedene Fenster in den Vordergrund laden/aktivieren.

    Sonntag, 8. September 2019 15:34