Chrome 打包应用程序和双显示器
Posted
技术标签:
【中文标题】Chrome 打包应用程序和双显示器【英文标题】:Chrome Packaged App and Dual Monitors 【发布时间】:2013-06-24 01:51:52 【问题描述】:我正在开发一个将使用多个显示器的打包应用程序。我需要能够在特定显示器中打开窗口。我也尝试过打开窗口,然后使用 javascript 将它们移动到监视器上。但是应用程序不会移动到活动显示的范围之外。
关于如何让它发挥作用的任何想法?
【问题讨论】:
据我所见,Chrome 在涉及多个显示器时往往会让人讨厌。如果我更换主显示器(我有 3 台显示器),镀铬屏幕会变黑且无响应。这很可能是 chrome 中的一些内部问题阻止了这种情况。 我的另一个想法是使用 Chrome Native Client SDK 进行窗口管理。但是,我对 SDK 了解不多。是否可以使用它来控制窗口? 这主要用于将桌面应用程序集成到浏览器中。它可以很好地工作,这取决于您使用 chrome 获得的访问级别。 这是一个内部应用程序,因此对权限或设置没有限制。如果可以在 Chrome 中使用,那么我将能够使用它。 问题 236996:window.moveTo 不能跨多个监视器工作:code.google.com/p/chromium/issues/detail?id=236996 【参考方案1】:使用chrome.system.display.getInfo
可以获取每个活动显示器的显示信息。
使用displayInfo.workArea
你可以得到每个显示器的工作区,你只要想一个大显示器,每个显示器就是一个工作区。有了这些信息,您可以使用
AppWindow#setBounds
到正确的监视器。请注意,AppWindow#moveTo
不工作。
【讨论】:
【参考方案2】:使用AppWindow#setBounds
例如
chrome.app.window.get('mainWindow').setBounds("height": 200, "left": 2000)
在 v34 上测试
轰隆隆。将此更改为正确答案。
【讨论】:
【参考方案3】:这不是我希望的解决方案,但正如其中一位 cmet 提到的那样,Chrome 和多显示器存在错误。就我而言,这是一个内部应用程序,所以我可以安装任何我需要的东西来完成这项工作。
我的解决方案是创建一个控制台应用程序,它启动 chrome 应用程序,然后使用 Windows32 API 移动窗口。显然不理想,但它可以工作,用户仍然只需要一键启动应用程序。
【讨论】:
【参考方案4】:您可以编写一个 chrome 扩展来完成这项工作。在后台脚本中,您可以监听 chrome.windows.onCreated 事件并使用 chrome.windows.update 函数将窗口移动到其他监视器
【讨论】:
以上是关于Chrome 打包应用程序和双显示器的主要内容,如果未能解决你的问题,请参考以下文章
在 Chrome 打包应用程序和 Chrome 扩展程序之间进行通信?