问题标签 [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 投票
3 回答
2679 浏览

c++ - 使用 c++ 插件从 chrome 浏览器下载并运行 exe

我有一个网页,当我单击一个按钮时,它应该从一个 url 下载一个 exe,并且该 exe 应该在没有用户干预的情况下自动调用。

在 Internet Explorer 中,我通过部署为 .cab 文件的 activex 控件 (.ocx) 实现了这一点。

我也计划将其扩展到 chrome 和 firefox 平台。(第一步至少镀铬)。

我不想使用 Java 小程序(需要删除 java 依赖项)。我知道我可以通过 Firebreath 插件实现这一点,但显然现在不是深入研究 NPAPI 插件的好时机(因为 NPAPI 已经逐渐淡出。Chrome 已经开始逐步淘汰 NPAPI)。

当我研究 NPAPI 的替代插件技术时,我偶然发现了 Google Native Client。在进一步阅读时,我知道 Nacl 也不适合我的需求,因为 os 调用 api 在 nacl 中不起作用(我希望 URLDownloadToFile api 或 createprocess 或 shellexecute 不起作用。如果我错了,请纠正我)。

我应该去本地消息传递吗?是否缺少其他替代技术?请指导我。

0 投票
0 回答
1437 浏览

windows - 无法让原生消息在 Chrome 扩展程序中工作

希望您能够帮助我。我需要从 Chrome 扩展中调用一个可执行 jar。通过研究,我发现https://developer.chrome.com/extensions/messaging#native-messaging是要走的路。

所以我首先编辑了我的扩展清单并添加了:

我可以在扩展概述中看到,该权限已被授予。

当我在 Windows 上操作时,我添加了一个注册表项:HKEY_LOCAL_MACHINE\SOFTWARE\Google\Chrome\NativeMessagingHosts\myextension:C:\path\to\myextension.json

“myextension.json”包含:

myextension.bat 包含:

(测试只是想启动计算器)

在我的扩展程序的 js 中,我尝试通过以下方式调用它:

但什么也没有发生。第一个警报“测试”将被执行。但除此之外什么都没有发生。

我真的不知道如何调试它,因为我通过执行它没有得到任何反馈。希望您能够帮助我。

/edit 刚刚看到我得到:“Uncaught TypeError: undefined is not a function (anonymous function)”在:

或者

/edit 2 好的,现在当我在浏览器中使用一个按钮时,它可以工作了:chrome.browserAction.onClicked.addListener(function() { chrome.extension.connectNative('fbehost'); });

但是当我想从网站上的一个按钮调用它时它不起作用:

警报有效,但没有其他任何反应。

0 投票
2 回答
6196 浏览

javascript - Chrome 扩展 NativeMessaging 'connectNative' 未定义

我正在尝试使用 runtime.connectNative 和 postMessage 实现 chrome 扩展。我正在关注chrome 文档,下载了我试图在没有任何更改的情况下运行的本机消息传递示例,而本机主机应用程序的代码可以在此处找到。

但是,我收到错误:未捕获的类型错误:无法读取未定义的属性“connectNative”。

该错误是从 javascript 扩展文件触发的,在这一行:
port = chrome.runtime.connectNative(hostName);

在从清单中加载扩展时,如下所示:

任何想法如何解决这个问题?

Chrome 版本 34,在 Windows 7、8.1 上测试

0 投票
0 回答
241 浏览

google-chrome-extension - Chrome 原生消息传递主机访问权限

我正在将基于 NPAPI 的插件移植到 Chrome 的本机消息传递主机。

我可以成功连接到它并运行主机应用程序。

但是主机应用程序(win32 GUI App)使用许多 win32 API,如 CreateFile 来更新自身和服务器上的其他实用程序。

主机应用程序通过安装程序 (setup.exe) 安装在 Program Files 文件夹中。因此,由于主机应用程序以当前用户权限运行(我可能错了),因此主机可能在程序文件文件夹中没有某些权限(例如在我的情况下为 CreateFile)。

通过 NPAPI,它曾经作为可执行文件运行,我猜它在系统权限下运行(我也可能错了)。

所以基本上有什么办法可以实现这一点。我知道这可能是 Chrome 试图通过 Native Host 解决的一个安全问题,但我需要这样做,否则某些可执行文件将不会从服务器更新。

此外,本机主机应用程序需要从服务器下载更多文件(我无法将其放置在安装程序中)。

此外,更新可执行文件和下载额外实用程序的源代码是跨平台的,所以我不会更改它,否则我可能需要重写很多代码。

那么有什么建议可以解决这种情况吗?

有什么方法可以通过 UAC 或其他方式获得本机主机应用程序的提升权限。我不介意是否提示用户输入 UAC 对话框。

或者除了 Native Messaging 之外还有其他选择吗?我猜氯化钠也不够用。

注意:GetLastError() 在 CreateFile 期间返回 ERROR_ACCESS_DENIED。问候, LazyCoder7。

0 投票
1 回答
850 浏览

java - 在 Java 中从 Chrome 接收本机消息

我正在尝试让 chrome 扩展程序和 Java 程序之间的本机消息传递工作。经过一番挣扎,我现在可以打开我的 Java 程序:

但我不知道如何阅读从我的分机发送的消息。我创建了一个程序,它打开一个带有文本区域的简单 JFrame。正如文档中所说,本机消息传递与标准输入和标准输出通信,我试图通过以下方式获取消息:

还尝试过:

jar 被执行,但 textarea 保持为空。我在互联网上找不到任何关于如何在 Java 中获取数据的信息。你能帮助我吗?

0 投票
3 回答
6835 浏览

google-chrome - 从 chrome 浏览器启动我安装的应用程序

我的要求是从 chrome 浏览器启动我安装的应用程序,如果它安装在客户端机器上,如果没有安装,那么我想开始下载。什么是 chrome 的最佳推荐解决方案?

所以票价我试着跟随

使用了 NPAPI,但由于 chrome 弃用了 NPAPI,我无法使用。

检查 PNacl 和 Pepper API 两个 API 都没有提供对本地文件系统的访问以启动应用程序。他们只是将我的 C/C++ 代码移植到浏览器中,并在有沙盒限制的浏览器环境中运行它。

我唯一的选择是使用本机消息传递,这是真的吗?或者是否有其他简单任务的选项可以从我们的 url 启动我的应用程序,

关于“原生消息”</p>

  1. 用户是否需要安装我的扩展程序
  2. 我需要将我的扩展程序添加到 chrome 商店吗
  3. 如何处理非管理员用户的注册表权限
  4. 我可以将扩展程序安装到 chrome 以及我的应用程序安装吗

注意:- 发现一些提供商使用“外部协议请求”来启动应用程序,但是没有足够的资源我可以在哪里找到更多关于这个的信息

谢谢和问候, 普拉文

0 投票
1 回答
1572 浏览

java - Chrome-application:使用本机消息传递主机启动外部应用程序(shell 脚本或 jar)

我正在开发一个 google-chrome 应用程序,我需要启动一个 Java 应用程序。(真的,我需要在没有选择文件弹出窗口的情况下读取和保存文件)。

由于 NPAPI 库已被弃用,我一直在寻找替代方案,并决定使用“本机消息传递主机”来启动外部应用程序。

为了创建我的第一个示例,我尝试启动一个 shell 脚本,因为我认为这更容易。但是我还没有设法启动脚本。我在linux下开发

清单文件在此路径中

“/etc/opt/chrome/native-messaing-hosts/com.centeropenmiddleware.l3p1.xmleditor.json”:

并且包含是:

应用程序 id 是 plfnjepfbddljeogeacemcpceiofapnm

该脚本创建一个文件:

应用程序代码在这一行失败:

捕获的错误是

要启动应用程序,我使用了这些命令

我使用稳定的谷歌浏览器版本(34.0.1847.132)

有什么不对吗?

0 投票
0 回答
67 浏览

google-chrome-extension - 如何处理本机消息传递的非管理员用户的注册表权限

请在本机消息传递注册表权限方面帮助我:

如何处理本机消息传递的非管理员用户的注册表权限。

谢谢,

普拉文

0 投票
1 回答
84 浏览

google-chrome-extension - 如何在客户端的 chrome 浏览器上安装扩展,同时网站点击/浏览

如果我的网站被用户点击/浏览,如何在客户端的 chrome 浏览器上安装扩展程序。

谢谢,

普拉文

0 投票
1 回答
648 浏览

javascript - 将 chrome 扩展上传到商店,包括本机应用程序

我有我的第一个全新的 google chrome 扩展程序,我想将它上传到 chrome 网上商店。问题是我的扩展正在使用通过 stdio 到 c++ exe 的本机消息传递。该扩展还需要安装注册表项。

是否可以将所需文件上传到 chrome 网上商店(包括 exe 和 dll 依赖项)?有没有办法自动安装注册表项(需要将消息从 chrome 扩展 js 发送到 exe),并注册 dll?