如何在不同的显示器中打开两个 Chrome kiosk 模式实例 (Windows)

How to open two instances of Chrome kiosk mode in different displays (Windows)

我们正在开发一个 Web 应用程序,它需要在两个不同的浏览器实例中分别在不同的屏幕上打开。显然我们使用的电脑已经有双屏显示,而且两台显示器的尺寸和分辨率都一样。

想法是,一旦 Windows 启动,这两个应用程序就应该立即全屏打开,我们首选的浏览器是 Chrome,因为它有几个命令可以帮助我们完成任务。

我们已成功将两个快捷方式添加到启动程序中,以在 kiosk 模式下打开两个实例,但我们无法选择在哪个显示上打开。

快捷方式有这个目标:

"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

为了打开两个实例,chrome 需要创建一个包含要打开的实例信息的临时文件 (--user-data-dir=c:\temp)

我们尝试使用(--window-position=1680,0)来指定打开实例的位置但是似乎Chrome会优先于最后一个打开实例的最后位置,所以两个实例都打开无论命令如何,都相同 window。

我们发现此站点包含所有可用命令的列表,但列表非常庞大,我们甚至不知道我们在寻找什么:

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

我找到了这个命令:--display=:0.0 | --display=:0.1但是它似乎不起作用或者我没有正确使用它

有什么想法吗? 谢谢。

我自己很难找到答案。

由于您是 运行 Windows,我能找到的最简单的解决方案是创建一个 批处理文件 +VBScript这将模拟 Win+Arrow-keys 快捷方式将 window 移动到第二个显示器。 Here's a very well-written Tech-net Article(我相信快捷方式是 Win-7 特定的,但也有显卡制造商的快捷方式)

但是,我确实找到了一个程序,另一个论坛声称您可以创建在特定 window 中启动的应用程序快捷方式,称为 DisplayFusion,check it out

您还可以在超级用户上使用 here 提到的命令行实用程序 <--- 可能是最快的方法

希望这对您有所帮助,

我也有同样的问题。这个答案: 启发我创建自己的 PowerShell 脚本以便于使用。

不久

脚本执行以下操作:

  1. 通过脚本启动一个Chrome实例
  2. 现在使用 WinApi 找到已启动的 window 并将其移动到所需的屏幕
  3. 将 F11 键发送到移动的 window 使其全屏(我们可以在全屏模式下启动 chrome,但在该模式下移动 windows 就不会这样了琐碎的)
  4. 对其他实例执行相同的操作,指定必要的 URL。

最终剧本

函数定义隐藏在 Dll 和另一个帮助脚本中。 (使用上面的 link 从 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 个不同的数据目录。您可能想也可能不想在启动前删除首选项。如果这样做,您的脚本可以控制屏幕的放置位置。如果你不这样做,那么它们可以手动定位,它会分别记住两个 windows 的位置:

"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 而不是 kiosk,以及 --new-window。您可能需要也可能不需要。

这段代码对我来说很好用:

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

我认为参数的顺序是相关的。

我 运行 遇到了同样的问题,并通过命令行标志设置了一个很好的解决方案。 的解决方案也很好用,但每次我想安装新的多监视器站时都需要进行一些设置,而且我没有为每个应用程序命名的图标。

我使用了一些命令行标志的组合并且有效:

监视器 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.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()

我希望这个解决方案对所有搜索类似解决方案的人有所帮助。

最后但并非最不重要的一点是这个脚本是什么?

  • 静默创建用户数据目录
  • 连接命令行参数
  • 在桌面上创建带图标的快捷方式(可选)

下面是如何使用 Raspberry Pi/linux。这些行应添加到 /home/pi/.config/lxsession/LXDE-pi/autostart

@chromium-browser --kiosk --incognito --user-data-dir=/home/pi/.config/chromium-display1 --window-position=0,0 https://bing.com 

@chromium-browser --kiosk --incognito --user-data-dir=/home/pi/.config/chromium-display2 --window-position=1921,0 https://google.com

如果您需要查找屏幕分辨率,请转至“首选项”>“屏幕配置”。