web-dev-qa-db-ja.com

Chromeキオスクモードの2つのインスタンスを異なるディスプレイで開く方法(Windows)

それぞれ異なる画面上の2つの異なるブラウザーインスタンスで開く必要があるWebアプリケーションを開発しています。明らかに、使用しているPCにはすでにデュアルディスプレイがあり、両方のモニターのサイズと解像度は同じです。

アイデアは、Windowsが起動するとすぐに2つのアプリケーションがフルスクリーンで開くはずであるということです。私たちの優先ブラウザはChromeです。

キオスクモードで2つのインスタンスを開く2つのショートカットをスタートアッププログラムに追加することに成功しましたが、開くディスプレイを選択することができませんでした。

ショートカットには次のターゲットがあります。

"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

2つのインスタンスを開くには、クロムが開くインスタンスの情報を含む一時ファイルを作成する必要があります(--user-data-dir=c:\temp)

--window-position=1680,0)インスタンスを開く場所を指定しますが、Chromeは最後のインスタンスが開かれた最後の位置を優先するため、コマンドに関係なく両方のインスタンスが同じウィンドウで開きます。

このサイトには、使用可能なすべてのコマンドのリストがありますが、リストは膨大であり、探しているものすらわかりません。

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

次のコマンドを見つけました:--display=:0.0 | --display=:0.1しかし、うまくいかないようであるか、適切に使用していない

何か案は?ありがとう。

18
multimediaxp

私も同じ問題を抱えています。この答え: 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 
12
Oleksandr

このコードは私のためにうまくいきました:

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

パラメータの順序は関係があると思います。

12
serxio

これを実現する最も簡単な方法は、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も使用したことに注意してください。これらは必要な場合と必要ない場合があります。

6
Garr Godfrey

私は自分で答えを見つけるのに非常に苦労しています。

Windowsを実行しているため、最も簡単な解決策は、Winをエミュレートするbatchファイル+ VBScriptを作成することでした。 +ウィンドウを2番目のディスプレイに移動するための矢印キーのショートカット。 これは非常によく書かれたTech-netの記事です (ショートカットはWin-7固有ですが、グラフィックカードメーカーのショートカットもあります)

しかし、別のフォーラムがDisplayFusionという特定のウィンドウで起動するアプリケーションのショートカットを作成できると主張しているプログラムを見つけました チェックアウト

上記のコマンドラインユーティリティを使用することもできます here on superuser <---おそらく最も速い方法

これがすべて役立つことを願って、

2
Aaron Gillion

私は同じ問題を実行し、コマンドラインフラグを使用して適切なソリューションをセットアップしました。 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をそのまま使用して、2番目または3番目のモニターでアプリを開くことができます。ものだけを表示したいアプリを監視するようなものです。

セットアップを簡単にするために、アイコン付きのショートカットのみを作成する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()

このソリューションが、同様のソリューションを検索するすべてのユーザーに役立つことを願っています。

最後になりましたが、このスクリプトは何ですか?

  • user-data-dirをサイレントに作成します
  • コマンドラインパラメータを連結します
  • デスクトップにアイコン(オプション)付きのショートカットを作成します
1
JohnnyDevNull