0

我正在尝试将本机消息传递与我的 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 让一切变得复杂?:)

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

4

2 回答 2

1

在注册表中导入以下内容

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” 确保在文件夹。在 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 格式的。

于 2014-10-03T11:13:41.160 回答
0

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

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

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

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

于 2015-07-08T18:48:52.730 回答