Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Chrome本机消息传递Chrome扩展_Java_Javascript_Google Chrome_Google Chrome Extension_Chrome Native Messaging - Fatal编程技术网

Java Chrome本机消息传递Chrome扩展

Java Chrome本机消息传递Chrome扩展,java,javascript,google-chrome,google-chrome-extension,chrome-native-messaging,Java,Javascript,Google Chrome,Google Chrome Extension,Chrome Native Messaging,我正在尝试将本机消息传递与我的chrome扩展和java应用程序结合起来 在我的chrome扩展的javascript中,我有以下代码。(我在manifest.json中确实拥有nativeMessaging权限) 当我向本机应用程序发送消息时,我的java应用程序应该向扩展程序发回消息,但事实并非如此。为了测试它是否真的连接到扩展,我在connectNative方法中输入了错误的主机名,但没有错误 我听说需要添加注册表项,因为我在windows上,但我不知道如何添加注册表项,而且regedit

我正在尝试将本机消息传递与我的chrome扩展和java应用程序结合起来

在我的chrome扩展的javascript中,我有以下代码。(我在manifest.json中确实拥有nativeMessaging权限) 当我向本机应用程序发送消息时,我的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"
Windows注册表编辑器5.00版
[HKEY\ U当前\用户\软件\谷歌\浏览器\ NativeMessagingHosts]
[HKEY_CURRENT_USER\Software\Google\Chrome\NativeMessagingHosts\com.app.native]
@=“\\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>"
  ]
}
{
“名称”:“com.app.native.messaging”,
“描述”:“您的描述”,
“路径”:“.exe”,
“类型”:“stdio”,
“允许的来源”:[
“chrome扩展:”
]
}
只要确保本机应用程序与JSON位于同一文件夹中,就可以了。在我的例子中,我使用C++本地应用程序,因此使用了EXE扩展。如果您查看chrome示例,他们已经为本机应用程序使用了python脚本


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

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

com.app.native.messaging.json文件中,最后一行必须如下所示:

"chrome-extension://<YOUR EXTENSION HASH>/"
“chrome扩展名://”

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

是的,您需要添加一个指向本机消息json的注册表项。看看这里-另外,启用chrome日志记录。看看这里。这个答案有一个问题。请核对我的答案。
"chrome-extension://<YOUR EXTENSION HASH>/"