google-chrome - Chrome 何时将 0 以外的值传递给 --parent-window 的本机消息传递主机?
问题描述
我正在 Windows 上开发 Chrome 扩展程序。它还有一个本地消息传递主机。传递给名为 --parent-window 的主机的参数在我的情况下始终为 0。
根据本机消息传递协议,它说
在 Windows 上,本机消息传递主机还传递了一个命令行参数,其中包含调用 chrome 本机窗口的句柄:--parent-window=。这使本机消息传递主机可以创建正确聚焦的本机 UI 窗口。
我在后台 JS 中打开本地消息传递端口。我的理解是您不能在内容中使用此 API。
这个 Chromium Bug 似乎是我的问题,但由于无法修复而被关闭。
那么 Chrome 何时或在什么情况下通过 --parent-window 发送有用的东西?
5 月 7 日,我认为对铬有所了解的作者说
还没有尝试过,但是您可以在内容脚本中打开您的本机消息传递端口吗?听起来 --parent-window 参数在这种情况下可能很有用。
他是什么意思,我该怎么做?
解决方案
回答我自己的问题。简而言之,如果您是 Windows 开发人员,它不会像您期望的那样工作。可能评论 2 有助于 Chromium 上的“Wont Fix”问题。
如果您使用的是本机消息传递 ( https://developer.chrome.com/extensions/messaging#native-messaging ),那么 --parent-window 命令行参数似乎可以提供解决方案。不幸的是,如果本地消息连接是从背景页面建立的,则为父窗口传递零,并且(显然)如果本地消息连接是从浏览器操作弹出窗口建立的,则传递瞬态弹出窗口的 HWND。而且我不允许从内容脚本调用 chrome.runtime.connectNative() 。因此,至少在我的扩展中, --parent-window 没有帮助。
我的解决方案是紧随其后
port = chrome.runtime.connectNative('myspecial.host.application');
然后我使用以下内容;
chrome.tabs.query({ active: true, currentWindow: true }, function (tab) {
console.log(tab[0].title);
port.postMessage({ MessageType: 'chromeTitle', Message: tab[0].title });
});
在您的主机中,如果您添加到此标题“-Google Chrome”,那么您可以使用类“Chrome_WidgetWin_1”和标题调用 FindWindowEX,以获取 Google 的主句柄。
推荐阅读
- python - 有没有办法阻止我的敌人从屏幕上掉下来?
- android - 如何解决此错误:无法创建凭据
- javascript - 切换 tr 中 td 的 Jquery 设置值
- node.js - 在 Angular 中上传文件 - 显示在 req.body 而不是 nodejs 服务器的 req.files 中
- reactjs - 当使用来自 react-router-dom 的重定向时,我正在尝试将保存在单独 .js 文件中的组件添加到新页面?
- wordpress - 登录后如何向 /wp-json/wp/v2/users/me 发出请求?(401 错误)
- typescript - Loopback 4 中提供程序的正确实现
- python - For循环评估值是否在列表中,不确定为什么它返回真/假值
- android - 如何使用 Adapter 中的 onPause 方法来停止 ExoPlayer?
- python - 如何正确编码来自网站的请求响应中的德语字符?