繁体   English   中英

如何在不同的显示器 (Windows) 中打开 Chrome 自助服务终端模式的两个实例

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

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

这个想法是,一旦 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 --display=:0.0 | --display=:0.1 --display=:0.0 | --display=:0.1但它似乎不起作用或我没有正确使用它

有任何想法吗? 谢谢。

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

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

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

我也有同样的问题。 这个答案: 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 

完成此操作的最简单方法是使用 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。 您可能需要也可能不需要这些。

我自己很难找到答案。

由于您运行的是 Windows,我能找到的最简单的解决方案是创建一个批处理文件 +VBScript ,它将模拟 Win+箭头键快捷方式以将窗口移动到第二个显示器。 这是一篇写得很好的Tech-net文章(我相信快捷键是Win-7特定的,但也有显卡制造商的快捷键)

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

您还可以使用所提及的命令行实用程序在这里的超级用户“---也许是最快的方法

希望这一切都有帮助,

我遇到了同样的问题,并使用命令行标志设置了一个很好的解决方案。 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 并在第二个或第三个显示器上打开我的应用程序,例如监控我只想显示内容的应用程序。

为了便于设置,我编写了一个 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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM