我正在Windows上开发Chrome扩展程序。它还具有本地消息传递主机。在我的情况下,传递给名为--parent-window的主机的参数始终为0。
According to the Native Messaging Protocol它说
在Windows上,本机消息传递主机也通过命令行传递 参数带有调用chrome本机窗口的句柄: --parent-window =。这样,本机消息传递主机可以创建正确聚焦的本机UI窗口。
我在后台JS中打开用于本机消息传递的端口。我的理解是您不能在内容中使用此API。
This Chromium Bug appears to be my issue,但由于无法修复而被关闭。
那么Chrome何时或在什么情况下会通过--parent-window发送有用的信息?
5月7日,我认为对铬有一点了解的作家说
还没有尝试过,但是您可以在 内容脚本吗?听起来像--parent-window arg可能是 在这种情况下很有用。
他是什么意思,我该怎么做?
答案 0 :(得分:0)
回答我自己的问题。简而言之,如果您是Windows开发人员,它将无法正常工作。注释2可能对Chromium上的“ Wont Fix”问题有所帮助。
Comment 2 seems to explain when it might work.
如果您正在使用本机消息传递 (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。