繁体   English   中英

Chrome Native Messaging Chrome扩展程序

[英]Chrome Native Messaging Chrome Extension

我正在尝试将本机消息传递与chrome扩展程序和java应用程序合并。

在我的chrome扩展程序的javascript中,我有以下代码。 (我的manifest.json中确实具有nativeMessaging权限)

function connectToNativeApp()
{
  console.log('connecting to native app...');
  port = chrome.runtime.connectNative('com.app.native');
  port.onMessage.addListener(onNativeMessage);
  port.onDisconnect.addListener(onDisconnected);
  console.log('connected to native app...');
}

当我向本机应用程序发送消息时,我的Java应用程序应该被发送回一条消息至扩展程序,但事实并非如此。 为了测试它是否实际上正在连接到扩展,我在connectNative方法中输入了错误的主机名,但没有错误!

我在Windows上听到了一些有关需要添加注册表项的信息,但是我不知道该怎么做,并且regedit中的chrome文件夹下没有NativeMessagingHosts文件夹。

我的本机应用程序文件夹也与chrome扩展名位于同一文件夹中。 我尝试寻找许多教程,但没有找到对我的问题有用的教程。 Windows为什么会使所有事情变得复杂? :)

请帮忙。 感谢您的时间和帮助。 Subby

在注册表中导入以下内容

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Google\Chrome\NativeMessagingHosts]

[HKEY_CURRENT_USER\Software\Google\Chrome\NativeMessagingHosts\com.app.native]
@="<YOURPATHHERE>\\com.app.native.messaging.json"

示例路径可能是“ C:\\\\ MyExtensions \\\\ com.app.native.messaging.json”。请确保您在其中有一个名为com.app.native.messaging.json的json文件(或您喜欢的其他任何名称)。夹。 在JSON文件中,添加以下内容

{
  "name": "com.app.native.messaging",
  "description": "Your desctiption",
  "path": "<YOUR NATIVE APP NAME>.exe",
  "type": "stdio",
  "allowed_origins": [
  "chrome-extension: <YOUR EXTENSION HASH>"
  ]
}

只要确保您的本机应用程序与JSON位于同一文件夹中,就可以了。 就我而言,我使用的是C ++本机应用程序,因此使用exe扩展名。 如果您查看chrome示例,他们会为本地应用程序使用python脚本。

请记住,您将在STDIN上侦听传入消息,并使用STDOUT将消息发送回chrome。 在两种情况下,消息都是JSON格式的。

另一个答案有问题。 因此,我花了几个小时。

com.app.native.messaging.json文件中,最后一行必须是这样的:

"chrome-extension://<YOUR EXTENSION HASH>/"

我没加斜杠,所以扩展名没有给出任何错误,但是应用程序没有启动。 希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM