问题标签 [chrome-native-messaging]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
945 浏览

c++ - 通信时出现 Chrome 本机消息错误

我正在尝试为 Google Chrome 创建一个扩展程序,我想在其中处理一些图像。该扩展以前是使用 NPAPI 创建的,但是被逐步淘汰需要切换到另一个替代方案,Native Messaging 看起来最适合这项工作。
本机主机是用 C++ 编写的,它从标准输入读取从扩展发送的格式化消息(有些像 {action:"name_of_action",buffer:"x0x0",length:"4"} ),解析它,提取缓冲区并执行对图像进行一些处理,之后我需要向扩展返回一条消息。


我面临的问题是,在几条消息之后(每次的数字都不一样),使用的端口断开连接,并且在 javascript 控制台中消息是:与本机消息传递主机通信时出错。.
我的应用程序基本上是这样做的:

我正在从扩展(base64 编码)发送图像缓冲区,解码它们并在应用程序中处理该缓冲区。我也尝试(在 Windows 上)使用 UrlDownloadToFile 函数从 C++ 下载该图像,但这似乎失败了,最终上一条消息与本机消息传递主机通信时出错。有人知道为什么 chrome 不允许从消息传递主机可执行文件下载文件吗?

0 投票
0 回答
168 浏览

chrome-native-messaging - Chromium 浏览器 - 本机消息传递示例问题

我正在尝试下面链接中给出的相同示例

http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/nativeMessaging/

在 Fedora 17 上使用 Chromium 浏览器 25

如前所述,我正在 Chromium 浏览器上加载应用程序并收到与上述相同的错误。

当我看到 Chrome://Version 时,它没有显示 Enable-Native-Messaging 选项。Chrome://Flags 也没有启用本机消息的选项。

我收到此错误

未捕获的类型错误:对象 # 没有方法“ConnectNative”

错误是因为我在 Fedora 17 上使用的 Chromium 浏览器版本 25 造成的吗?

如果是,那么我在哪里可以获得支持 Native-Messaging-API 的 Fedora 上的 Chromium 浏览器版本,如果不是,可能是什么问题以及解决它的相关步骤?

0 投票
2 回答
2868 浏览

javascript - 调试 Chrome 原生消息

我是开发 Chrome 扩展的初学者。我正在尝试在我的扩展和 C++ 代码之间实现本机消息传递。这是C++代码

}

问题是扩展确实收到了任何东西,我不知道如何调试程序。我尝试从终端打开 Chrome 以显示错误,但那里没有显示任何内容。这是来自 background.js 的代码

有什么办法可以调试程序?

0 投票
3 回答
1974 浏览

google-chrome - Chrome 原生消息传递 API 无法在 Linux 上运行

我一直在尝试在我的 Debian linux 上运行官方的Native Messaging 示例,但是当我单击连接按钮时,没有建立与主机的连接,并且错误“找不到指定的本机消息传递主机”。被退回。

从其他有同样问题的人那里,我了解到这可能是我的本机应用程序清单中的一个错误,但我现在几个小时都找不到它。它位于~/.config/google-chrome/NativeMessagingHosts/com.google.chrome.example.echo.json并显示:

我唯一更改的是 chrome 扩展 ID 和路径,我检查了它们(从我的 shell 运行它时,应用程序启动并正常运行)。其代码取自上述示例。

知道可能出了什么问题吗?我难住了。

0 投票
1 回答
13683 浏览

windows - Windows 上的 Chrome 原生消息传递

我认为它已经在等待答案,但不确定:本机应用程序在 Chrome 扩展中不起作用在 Linux 上,它工作正常,但在 Windows 7 和 8 上我总是收到错误“未找到指定的本机消息传递主机”。

这是我的注册表(我已经尝试过使用双反斜杠和 HKEY_LOCAL_MACHINE):


清单.json


com.google.chrome.example.echo-win.json


本机消息传递示例主机.exe


JS 片段(来自http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/nativeMessaging/app/main.js?revision=228976):

我无法找出问题所在。我的错在哪里?

update
在使用 Procces Monitor 监控注册表之后。我发现 chrome.exe 在 64 位密钥中搜索密钥。现在我可以看到没有丢失相关的注册表项,但我仍然收到错误消息。

0 投票
1 回答
333 浏览

javascript - 用于调用外部应用程序的 NPAPI 替换(本机消息传递主机)不起作用

我有一个 Firebreath 插件,它对我有同样的作用,但由于它的支持正在 chrome 中被删除,我必须寻找一个替代方案。在查看了替代方案后,本机消息传递主机似乎是我的最佳选择。我创建了以下 com.mycompany.testapp.json

并将其复制到目录:

但是我的应用程序没有被调用。

0 投票
1 回答
112 浏览

google-chrome - 哪些版本的 Chrome 支持 HKCU Native Messaging Host

我正在开发一个与 Windows 的本机消息传递应用程序交互的 Chrome 扩展程序。当前的文档指出本机消息传递主机可以在 HKLM 和 HKCU 中注册。问题是 Chrome 浏览器哪些版本支持在 HKCU 中注册 Native Messaging Host?

注意:我看到问题 #321480 ( https://code.google.com/p/chromium/issues/detail?id=321480 ) 中解决了对 HKCU 的支持,我还在中继中看到了代码。我不知道哪些版本的 Chrome 包含这个新代码。

0 投票
1 回答
1135 浏览

.net - 在 Windows 上向 .NET 应用程序发送本机消息

我尽我所能遵循本机消息传递文档,但似乎无法让我的本机 .NET 应用程序甚至开始在 Windows 上运行。在寻找其他信息时,我注意到有些事情没有记录且不清楚。

首先,文档没有提到添加“nativeMessaging”权限的要求。改变这个之后,我走得更远了;Chrome 现在实际上在气球弹出窗口中提到了“添加了新的后台应用程序”。

但是,无论我尝试了哪些操作,以下代码都会立即断开连接。

根据我调试这个东西的尝试,我有几个问题:

  1. 在 Windows 上,Chrome 何时尝试从注册表中的 NativeMessagingHosts 加载清单?换句话说,我应该在更改值时重新启动 Chrome,还是在"chrome://extensions/"中重新加载扩展程序就足够了?
  2. 注册表中的绝对路径,应该如何格式化?例如,我看到人们只使用“\\\\”斜杠作为路径分隔符。它需要周围的引号吗?
  3. 有什么方法可以获取有关问题所在的更多信息?出于测试目的,我重命名了注册表项以查看是否会收到不同的错误(假设因为它无法加载它会通知我)。相反,似乎仍然调用了“onDisconnect” 。
  4. 与注册表中的路径类似,注册表值指向的原生应用清单文件中指向原生应用的相对路径应该如何格式化?(文档中有一个这样的例子,但只是为了确定什么有效,什么无效......)

我现在似乎有太多变量无法调试它,并且没有立即看到我如何验证我的注册表值是否至少设置正确。

0 投票
1 回答
196 浏览

security - Chrome 扩展程序安全性

我正在开发一个基于 GWT 的客户端服务器 Web 应用程序。

该应用程序在 IIS 上安装一个网站。当客户端第一次浏览网站时,他们需要运行本地安装,它会在客户端计算机上安装一个本地进程和一个 NPAPI 插件。

客户端运行在IE、Chrome、Firefox等浏览器中,使用NPAPI插件向本地进程发送消息。本地进程用于访问文件系统、注册表等。

为了防止其他网站使用 NPAPI 插件,当用户第一次登录时,服务器会向他发送一个包含站点 URL + 一些其他数据的字符串的哈希值。NPAPI 插件可以访问浏览器的当前 URL,还可以创建相同的哈希值并比较两者。

由于 Chrome 即将结束对 NPAPI 插件的支持,我正在尝试用 Chrome 扩展程序和本机消息传递主机替换该插件。扩展不能限制在某个域,因为它可以从许多域中使用。

我试图找出一种方法来阻止其他网站使用扩展程序向本机主机发送消息,但找不到方法。有谁知道我怎么能做到这一点?

任何建议将不胜感激,谢谢。

0 投票
2 回答
4153 浏览

google-chrome - Chrome 应用无法与 Windows 上的本机主机通信

我用 Java 编写了一个 chrome 应用程序和一个本机消息传递主机。该组合在 linux 上运行良好。但是,当我尝试将组合移植到 Windows 时,无法建立通信。包含主机的 jar 与 linux 变体完全相同。我正在使用以下脚本 (start.bat) 来启动 Java 主机:

json清单如下:

我已将 HKEY_LOCAL_MACHINE\SOFTWARE\Google\Chrome\NativeMessagingHosts\com.service.host 配置为路径 e:\hosts\com.service.host.json service.bat 文件以及 jar (theHost.jar) 也是在 e:\hosts\ 目录中。尝试开始通信时出现错误:与本机消息传递主机通信时出错。我还尝试将清单中的路径更改为:e:\\hosts\\start.bat 但结果/错误是相同的。当我在 cmd 窗口中手动启动 bat 文件时,据我所知,主机会正确初始化并等待来自 Chrome 应用程序的消息。另外,当我添加该行时:

在调用bat时创建一个空文件的“java - jar ...”行之前,该空文件是在手动启动bat时创建的,而不是在chrome应用程序“调用”时创建的。任何帮助将不胜感激。

版本:Windows 7、Java 7u55、Chrome 34.0.1847.116 m