谷歌浏览器 - 新窗口开关忽略 - 窗口位置和 - 窗口大小

时间:2013-01-29 20:52:22

标签: c# .net google-chrome process

我正在尝试通过命令行控制新生成的Google Chrome窗口的大小和位置(通过C#。)

我的命令行最终看起来像:

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

但是,新窗口只会打开最后一个Chrome窗口的顶部。

我正在寻找的最终结果是能够在单独的窗口中启动具有特定位置和大小的多个Google Chrome实例。到目前为止,我能够做到这一点的唯一方法是指定每个实例都拥有它自己的--user-data-dir。但是,考虑到用户可能安装了多少扩展,这并不理想,并且它不是最好的用户体验。

有人有任何建议吗?

2 个答案:

答案 0 :(得分:1)

如果Chrome未编程为允许此操作,则只有一个选项。

  1. 创建流程并保留流程对象。
  2. 使用Process.MainWindowHandle获取新创建的窗口(您可能需要使用循环Process.RefreshProcess.WaitForInputIdle
  3. 使用SetWindowPos原生函数将窗口定位在您想要的任何位置。
  4. 本机挂钩可用于检测窗口的创建,但这需要您创建一个非托管DLL。

答案 1 :(得分:0)

我有另一个想法,为什么不使用镀铬扩展来处理定位。

背景:我们遇到了相关的困难。内部webapp,在Windows中打开多个文档,需要放在其他监视器中。 出于安全原因,javascript不支持此功能,只有原生扩展可以正常使用标签/窗口对象。

因此,我们创建了一个开源的chrome扩展程序,用于实现这一目标:灵活的窗口位置可以跨多个监视器设置。

您可能更感兴趣的是使用预定义模板的功能。模板文件位于您喜欢的任何网络服务器中,因此可以轻松地在不同用户之间共享。

镀铬扩展名为“MultiWindow Positioner”,完全免费。您可以在Chrome商店here

获取它

您在项目chrome-multiwindow-positioner

中的github中找到的实际源代码

免责声明:我是开源(MIT)github项目的维护者。如果有任何有趣的想法,或者评论可以随意分享here