it-swarm.com.de

So öffnen Sie zwei Instanzen des Chrome-Kioskmodus in verschiedenen Anzeigen (Windows)

Wir entwickeln eine Webanwendung, die in zwei verschiedenen Browserinstanzen auf einem anderen Bildschirm geöffnet werden muss. Natürlich hat der von uns verwendete PC bereits zwei Bildschirme und beide Monitore haben die gleiche Größe und Auflösung.

Die Idee ist, dass, sobald Windows gestartet wird, die beiden Anwendungen sofort im Vollbildmodus geöffnet werden sollten, unser bevorzugter Browser Chrome ist, da er mit mehreren Befehlen zählt, die uns bei der Ausführung der Aufgabe helfen könnten.

Es ist uns gelungen, den Startprogrammen zwei Verknüpfungen hinzuzufügen, durch die zwei Instanzen im Kioskmodus geöffnet werden. Es ist jedoch nicht möglich, die Anzeige auszuwählen, die geöffnet werden soll.

Die Verknüpfungen haben dieses Ziel: 

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --user-data-dir=c:\temp --kiosk www.domain.com --new-window "%1" --window-position=0,0

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --user-data-dir=c:\temp --kiosk www.domain2.com --new-window "%2" --window-position=1680,0

Um zwei Instanzen zu öffnen, muss Chromes eine temporäre Datei mit Informationen der Instanz erstellen, um (--user-data-dir=c:\temp) zu öffnen.

Wir haben versucht, mithilfe von (--window-position=1680,0) anzugeben, wo die Instanz geöffnet werden soll. Chrome scheint jedoch der letzten Position, an der die letzte Instanz geöffnet wurde, Priorität zu geben. Daher werden beide Instanzen unabhängig vom Befehl im selben Fenster geöffnet.

Wir fanden diese Seite mit einer Liste aller verfügbaren Befehle, aber die Liste ist riesig und wir wissen nicht einmal, wonach wir suchen: 

http://peter.sh/experiments/chromium-command-line-switches/

Ich habe diesen Befehl gefunden: --display=:0.0 | --display=:0.1 Aber er scheint nicht zu funktionieren oder ich benutze ihn nicht richtig

Irgendwelche Ideen? Danke.

17
multimediaxp

Ich habe auch das gleiche Problem. Diese Antwort: https://stackoverflow.com/a/3750187/1305565 hat mich dazu inspiriert, ein eigenes PowerShell-Skript für eine einfachere Verwendung zu erstellen.

Kurz

Das Skript führt Folgendes aus:

  1. Starten Sie eine Chrome-Instanz über ein Skript
  2. Verwenden Sie nun WinApi, um das Startfenster zu finden und verschieben Sie es auf den gewünschten Bildschirm
  3. Senden Sie die F11-Taste an das verschobene Fenster, um den Vollbildmodus zu aktivieren (wir könnten Chrome bereits im Vollbildmodus starten, aber das Verschieben von Fenstern in diesem Modus wäre nicht so trivial).
  4. Machen Sie dasselbe mit anderen Instanzen und geben Sie die erforderliche URL an.

Schlussskript

Funktionsdefinitionen sind in DLL und einem anderen Hilfsskript versteckt. (lade sie von GitHub über den Link oben herunter)

$chromePath = 'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe'
$chromeArguments = '--new-window --incognito'

# &taskkill /im chrome* /F 
Chrome-Kiosk 'http://google.com' -MonitorNum 1 
Chrome-Kiosk 'http://http://www.bbc.com/' -MonitorNum 2 
11
Oleksandr

Dieser Code hat für mich gut funktioniert:

start C:\Users\terminal\AppData\Local\Google\Chrome\Application\chrome.exe --app="http://www.domain1.com" --window-position=0,0 --kiosk --user-data-dir=c:/monitor1

start C:\Users\terminal\AppData\Local\Google\Chrome\Application\chrome.exe --app="http://www.domain2.com" --window-position=1680,0 --kiosk --user-data-dir=c:/monitor2

Ich denke, die Reihenfolge der Parameter ist relevant.

11
serxio

Der einfachste Weg, dies zu erreichen, ist die Verwendung von zwei verschiedenen Datenverzeichnissen. Möglicherweise möchten Sie die Voreinstellungen vor dem Start nicht löschen. Wenn Sie dies tun, kann Ihr Skript die Position der Bildschirme steuern. Wenn Sie dies nicht tun, können sie manuell positioniert werden und die Position der beiden Fenster wird separat gespeichert:

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --user-data-dir=c:/screen1 --start-fullscreen --new-window www.domain.com --new-window "%1" --window-position=0,0

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --user-data-dir=c:/screen2 --start-fullscreen --new-window www.domain2.com --new-window "%2" --window-position=1680,0

Beachten Sie, ich habe auch --start-fullscreen anstelle von Kiosk und --new-window verwendet. Möglicherweise brauchen Sie diese nicht.

6
Garr Godfrey

Es fällt mir sehr schwer, selbst eine Antwort zu finden.

Die am einfachsten zu lösende Lösung, da Sie Windows verwenden, war die Erstellung einer batch-Datei + VBScript, die die Win- + Pfeiltasten-Tastenkombination emuliert, um ein Fenster zur zweiten Anzeige zu verschieben. Hier ist ein sehr gut geschriebener Tech-Net-Artikel (Ich denke, Shortcut ist Win-7-spezifisch, aber es gibt auch Abkürzungen für Grafikkartenhersteller)

Ich habe jedoch ein Programm gefunden, das in einem anderen Forum behauptet wird, dass Sie Anwendungsverknüpfungen erstellen können, die in einem bestimmten Fenster namens DisplayFusion gestartet werden. check it out

Sie können auch das Befehlszeilendienstprogramm verwenden, das hier bei Superuser <--- ist. Die wahrscheinlich schnellste Methode.

Hoffe das hilft alles,

2
Aaron Gillion

Ich habe das gleiche Problem und habe mit den Befehlszeilenflaggen eine gute Lösung gefunden. Die Lösung von https://stackoverflow.com/a/29646543/3634274 funktioniert auch sehr gut, aber sie erfordert jedes Mal ein paar Einstellungen, wenn ich neue Multimonitor-Stationen installieren möchte und keine benannten Symbole dafür habe jede Anwendung.

Ich verwende eine Kombination einiger Befehlszeilenflags und es funktioniert:

Monitor 1:

--user-data-dir=C:\temp\App1
--app="http://appxy.appserver.my?station=PC-MYWORKSTATION&theme=dark"
--incognito
--window-position=0,0
--start-fullscreen

Monitor 2:

--user-data-dir=C:\temp\App2
--app="http://appxy.appserver.my?station=PC-MYWORKSTATION&theme=light"
--incognito
--window-position=2560,0
--start-fullscreen

Es ist wichtig, vollständig getrennte Benutzerprofile zu verwenden, denn wenn Sie Ihr Chrome mit geöffnetem Profil geöffnet haben, wird es nicht als eigene Instanz gestartet. Mit diesem Setup kann ich mein Chrome so verwenden, wie es ist, und meine Apps auf dem zweiten oder dritten Monitor öffnen, z. Wie Monitoring-Apps, auf denen ich nur Dinge anzeigen möchte.

Um das Setup zu vereinfachen, habe ich ein Powershell-Skript geschrieben, das nur die Verknüpfung mit einem Symbol erstellt:

# Example Call:
#
# Monitor 1
# .\createShortcut.ps2 -AppName "MyApp 1" -AppPath "http://google.com" -StartFullScreen $true -WindowPosition "0,0"
# .\createShortcut.ps2 -AppName "MyApp 1" -AppPath "http://google.com" -AppIcon "\\domain.local\icons\myapp.ico" -StartFullScreen $true -WindowPosition "0,0"
#
# Monitor 2
# .\createShortcut.ps2 -AppName "MyApp 2" -AppPath "http://google.com" -StartFullScreen $true -WindowPosition "2560,0"
# .\createShortcut.ps2 -AppName "MyApp 2" -AppPath "http://google.com" -AppIcon "\\domain.local\icons\myapp.ico" -StartFullScreen $true -WindowPosition "2560,0"

param(
  [string]$AppName,
  [string]$AppPath,
  [string]$AppIcon,
  [boolean]$StartFullscreen,
  [string]$WindowPosition
)

$AppArgs = " --incognito";

if($WindowPosition) {
  $AppArgs += " --window-position=$WindowPosition"
}

if($StartFullscreen -eq $true) {
  $AppArgs += " --start-fullscreen"
}

$userDir = "C:\temp\$AppName"
Write-Host "Create Folder:"$userDir
New-Item -ItemType directory -Path $userDir -Force > $null
$scArguments = "--user-data-dir=`"$userDir`" --app=`"$AppPath`"$AppArgs"

Write-Host "Argmunets: $scArguments"
$Shell = New-Object -ComObject WScript.Shell
$ShortCut = $Shell.CreateShortcut("$env:USERPROFILE\Desktop\$AppName.lnk")
$ShortCut.TargetPath = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
$ShortCut.Arguments = $scArguments
$ShortCut.WorkingDirectory = "C:\Program Files (x86)\Google\Chrome\Application"
$ShortCut.WindowStyle = 1
if ($AppIcon.Length -gt 0) {
  $ShortCut.IconLocation = $AppIcon
}
$shortCut.Save()

Ich hoffe, diese Lösung hilft allen, die nach einer ähnlichen Lösung suchen.

Zu guter Letzt, was macht dieses Skript?

  • erstellt das Benutzerdatenverzeichnis im Hintergrund
  • concats die Befehlszeilenparameter
  • erstellt die Verknüpfung mit einem Symbol (optional) auf dem Desktop
0
JohnnyDevNull