10

コマンドラインを介して(C#を介して)新しく生成されたGoogle Chromeウィンドウのサイズと位置を制御しようとしています。

コマンドラインは次のようになります。

--new-window --window-position=100,100 --window-size=800,600 www.UrlToOpen.com

ただし、新しいウィンドウは、最後の Chrome ウィンドウが開始された場所の上に表示されます。

私が探している最終結果は、特定の場所とサイズで、Google Chrome の複数のインスタンスを別々のウィンドウで起動できるようにすることです。これまでのところ、これを行うことができた唯一の方法は、各インスタンスが独自の を持つように指定すること--user-data-dirです。ただし、ユーザーがインストールした拡張機能の数を考えると、これは理想的ではなく、最適なユーザー エクスペリエンスとは言えません。

誰か提案はありますか?

4

2 に答える 2

1

Chrome がこれを許可するようにプログラムされていない場合、選択肢は 1 つしかありません。

  1. プロセスを作成し、プロセス オブジェクトを保持します。
  2. Process.MainWindowHandleを使用して、新しく作成されたウィンドウを取得します (ループとProcess.RefreshまたはProcess.WaitForInputIdleを使用する必要がある場合があります) 。
  3. SetWindowPosネイティブ関数を使用して、ウィンドウを任意の場所に配置します。

ネイティブ フックを使用してウィンドウの作成を検出することもできますが、それにはアンマネージ DLL を作成する必要があります。

于 2014-08-30T20:37:35.087 に答える
0

別のアイデアがあります。配置を処理するためにクロム拡張機能を使用しないでください。

背景: 関連する問題がありました。複数のドキュメントをウィンドウで開き、他のモニターに配置する必要がある内部 Web アプリケーション。javascript はセキュリティ上の理由からこれをサポートしておらず、タブ/ウィンドウ オブジェクトを適切に操作できるのはネイティブ拡張のみです。

したがって、まさにそれを行うためのオープンソースのクロム拡張機能を作成しました。それは、マルチモニター設定全体で柔軟なウィンドウ位置を設定できることです。

おそらく、事前定義されたテンプレートを使用する機能にもっと興味があるでしょう。テンプレート ファイルは任意の Web サーバーに配置されるため、さまざまなユーザー間で簡単に共有できます。

Chrome 拡張機能は「MultiWindow Positioner」と呼ばれ、完全に無料です。こちらのクロムストアで入手できます

プロジェクトchrome-multiwindow-positioner のgithub にある実際のソース コード

免責事項: 私はオープン ソース (MIT) github プロジェクトのメンテナーです。興味深いアイデアやコメントがあれば、ここで自由に共有してください

于 2016-11-23T15:22:54.127 に答える