Как открыть два экземпляра режима киоска Chrome на разных дисплеях (Windows)


Мы разрабатываем веб-приложение, которое должно открываться в двух разных экземплярах браузера на разных экранах. Очевидно, что компьютер, который мы используем, уже имеет двойной дисплей, и оба монитора имеют одинаковый размер и разрешение.

Идея заключается в том, что как только Windows запускается, два приложения должны немедленно открыться в полноэкранном режиме, наш предпочтительный браузер-Chrome, поскольку он рассчитан на несколько команд, которые могут помочь нам выполнить эту задачу.

Нам удалось добавить к запуск программирует два ярлыка, которые открывают два экземпляра в режиме киоска, но мы не смогли выбрать, на каком дисплее открывать.

Ярлыки имеют следующую цель:

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

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

Для открытия двух экземпляров chromes необходимо создать временный файл с информацией об экземпляре, который будет открыт (--user-data-dir=c:temp)

Мы попытались использовать (--window-position=1680,0), чтобы указать, где открыть экземпляр, но, похоже, Chrome будет отдавать приоритет последней позиции, где был открыт последний экземпляр, поэтому оба экземпляры открываются в одном и том же окне независимо от команды.

Мы нашли этот сайт со списком всех доступных команд, но список огромен, и мы даже не знаем, что мы ищем:

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

Я нашел эту команду: --display=:0.0 | --display=:0.1 но она, кажется, не работает, или я не использую ее должным образом

Есть идеи? Спасибо.

4 16

4 ответа:

У меня тоже такая проблема. Этот ответ: https://stackoverflow.com/a/3750187/1305565 вдохновил меня на создание собственного сценария PowerShell для более удобного использования.

Коротко

Скрипт делает следующее:

  1. запуск экземпляра Chrome через скрипт
  2. теперь используйте WinApi, чтобы найти начатое окно и переместить его на нужный экран
  3. отправьте клавишу F11 в перемещенное окно, чтобы сделать его полноэкранным (мы могли бы запустить chrome уже в полноэкранном режиме, но перемещение окон в этом режиме было бы не так тривиально)
  4. Сделайте следующее: то же самое с другими экземплярами, указав необходимый URL.

Финальный сценарий

Определения функций скрыты в Dll и в другом вспомогательном скрипте. (загрузите их с GitHub, используя ссылку выше)

$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 

Этот код прекрасно работал для меня:

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

Я думаю, что порядок параметров имеет значение.

Самый простой способ сделать это-использовать 2 различных каталога данных. Вы можете удалить или не удалить настройки перед запуском. Если вы это сделаете, ваш сценарий сможет контролировать, где расположены экраны. Если вы этого не сделаете, то их можно расположить вручную, и он запомнит положение обоих окон отдельно:

"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

Обратите внимание, что я также использовал --start-fullscreen вместо киоска и --new-window. Они могут вам понадобиться, а могут и не понадобиться.

Мне самому очень трудно найти ответ.

Самое близкое к простому решение, поскольку вы работаете под управлением Windows, которое я смог найти, состояло в создании пакетного файла +VBScript, который будет эмулировать сочетание клавиш Win+Arrow-keys для перемещения окна на 2-й дисплей. Вот очень хорошо написанная статья Tech-net (ярлык, по-моему, специфичен для Win-7, но есть также ярлыки производителей видеокарт)

Тем не менее, я нашел программу, которую утверждает другой форум вы можете создать ярлыки приложений, которые запускаются в определенном окне под названием DisplayFusion, проверьте его

Вы также можете использовать утилиту командной строки, упомянутую здесь на Суперпользователе вероятно, самый быстрый метод

Надеюсь, это все поможет,