Подтвердить что ты не робот

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

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

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

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

У ярлыков есть эта цель:

"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

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

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

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

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

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

Любые идеи? Спасибо.

4b9b3361

Ответ 1

У меня тоже проблема. Этот ответ: fooobar.com/questions/268744/... вдохновил меня создать собственный PowerShell script для более легкого использования.

Вскоре

Script выполняет следующие действия:

  • Запустите экземпляр Chrome через script
  • Теперь используйте WinApi, чтобы найти начатое окно и переместите его на нужный экран.
  • Отправьте ключ F11 в перемещенное окно, чтобы сделать его полноэкранным (мы могли бы запустить хром уже в полноэкранном режиме, но перемещение окон в этом режиме было бы не так уж и тривиально)
  • Сделайте то же самое с другими экземплярами, указав нужный URL.

Финал script

Определения функций скрыты в Dll и в другом вспомогательном script. (загрузите их из 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 

Ответ 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

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

Ответ 3

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

"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 вместо киоска и -ново-окно. Вы можете или не нуждаться в них.

Ответ 4

Мне очень сложно найти ответ сам.

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

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

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

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

Ответ 5

Я запустил ту же проблему и получил хорошее решение с флагами командной строки. Решение из fooobar.com/info/415101/... также работает очень хорошо, но оно требует некоторой настройки каждый раз, когда я хочу установить новые станции с несколькими мониторами, и у меня нет именованных значков для каждого приложения.

Я использую комбинацию некоторых флагов командной строки, и она работает:

Монитор 1:

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

Монитор 2:

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

Важно использовать полностью отдельные профили пользователей, потому что когда у вас Chrome с открытым профилем, он не запускается как собственный экземпляр. С этой настройкой я могу использовать свой Chrome как есть и открывать свои приложения на втором или третьем мониторе, например, приложения мониторинга, на которых я только хочу отображать данные.

Чтобы упростить настройку, я написал скрипт powershell, который создает только ярлык со значком:

# 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 $Station.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()

Я надеюсь, что это решение поможет всем, кто ищет подобное решение.

Последнее, но не менее важное, что делает этот сценарий?

  • молча создает user-data-dir
  • Concats параметры командной строки
  • создает ярлык со значком (необязательно) на рабочем столе