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

时间:2015-03-27 05:41:07

标签: google-chrome fullscreen multiple-monitors kiosk-mode

我们正在开发一个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

为了打开两个实例,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但它似乎没有用,或者我没有正确使用它

有什么想法吗? 感谢。

6 个答案:

答案 0 :(得分:11)

我也有同样的问题。这个答案:https://stackoverflow.com/a/3750187/1305565激励我创建自己的PowerShell脚本以便于使用。

不久

脚本执行以下操作:

  1. 通过脚本启动Chrome实例
  2. 现在使用WinApi查找已启动的窗口并将其移动到所需的屏幕
  3. 将F11键发送到移动的窗口以使其全屏显示(我们可以在全屏模式下启动Chrome,但在该模式下移动窗口并不是那么简单)
  4. 对其他实例执行相同操作,指定必要的URL。
  5. 最终脚本

    函数定义隐藏在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 
    

答案 1 :(得分:11)

这段代码对我来说很好:

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 :(得分:6)

实现此目的的最简单方法是使用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而不是kiosk,以及--new-window。你可能需要也可能不需要。

答案 3 :(得分:2)

我自己很难找到答案。

最接近简单的解决方案,因为您正在运行Windows,我找到的是创建一个批处理文件+ VBScript ,它将模拟Win +箭头键快捷键以移动窗口到第二个显示。 Here's a very well-written Tech-net Article(我相信快捷方式是Win-7,但也有显卡制造商的快捷方式)

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

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

希望这一切都有帮助,

答案 4 :(得分:1)

这是使用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

如果需要查找屏幕分辨率,请转到“偏好设置”>“屏幕配置”。

答案 5 :(得分:0)

我遇到了同样的问题,并使用命令行标志设置了一个好的解决方案。 https://stackoverflow.com/a/29646543/3634274的解决方案也很好用,但是每次我要安装新的多监视器站且每个应用程序都没有命名图标时,都需要进行一些设置。

我结合使用了一些命令行标志,并且可以正常工作:

显示器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不会作为自己的实例启动。通过该设置,我可以按原样使用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()

我希望该解决方案可以帮助所有搜索相似解决方案的人。

最后但并非最不重要的是,该脚本是什么?

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