问题标签 [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 回答
1215 浏览

windows - Windows Chrome 扩展原生消息只能收到第一响应

我正在尝试使用本机消息将一些数据发送到我的本机 Windows 应用程序。它适用于 runtime.sendNativeMessage() 方法。当我尝试使用使用端口的长期连接时,它还可以将数据从 chrome 传递到我的应用程序。但是,chrome 扩展只能接收来自我的应用程序的第一个响应。我确信端口仍然打开,因为我的应用程序仍然可以从 chrome 接收数据。以下是我的代码:

Chrome 扩展脚本:

我在 C++ 中的 Windows 应用程序:

请注意最后一行“ std::cout.flush(); ”,如果我将其注释掉,即使是第一个响应也不会在 chrome 中显示。我只是无法弄清楚 chrome 如何从应用程序的标准输出中读取。

0 投票
1 回答
1788 浏览

linux - linux上的本机消息传递不起作用

我一直在尝试在 Debian Linux 上运行本机消息传递,但是当我单击连接按钮时,我只收到消息“正在连接到本机消息传递主机 com.google.chrome.example.echo”,而没有其他消息。

一切都与默认示例类似,我只是在清单文件中更改了路径。怎么了?

0 投票
0 回答
430 浏览

c++ - 来自chrome本机消息传递主机应用程序的ffmpeg不起作用

好的,这就是我得到的,我正在使用本机消息传递从 Windows 中的 chrome 扩展程序中触发 c++ 程序。
这个 c++ 程序 (ehost.exe) 创建了一个 ffmpeg 进程,用于记录输入音频并将其保存为 mp3。
我使用 CreateProcess() 函数执行
此操作 当我自己打开 ehost.exe(双击它)时,这非常有效,但是当我从我的 chrome 扩展程序chrome.runtime.connectNative() (没有权限...

有人知道为什么吗?
这是启动ffmpeg.exe的ehost.exe代码

static HANDLE startFFmpeg() { char cmd[] = "C:\Users\moizilla\Desktop\native\ffmpeg\bin\ffmpeg.exe -y -f dshow -i audio=\"Microphone (High Definition Aud\" -acodec libmp3lame C:\Users\moizilla\Desktop\native\kasdkddfodkadd.mp3"; PROCESS_INFORMATION pi = {0}; STARTUPINFO si={0}; si.cb = sizeof(STARTUPINFO); if(CreateProcess(NULL, cmd, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi)){ CloseHandle(pi.hThread); return pi.hProcess; } return NULL; }

0 投票
2 回答
1771 浏览

java - Chrome 原生消息 Chrome 扩展

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

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

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

我听说需要添加注册表项,因为我在 Windows 上,但我不知道如何,并且在 regedit 的 chrome 文件夹下没有 NativeMessagingHosts 文件夹。

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

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

0 投票
1 回答
9331 浏览

c# - 原生消息 Chrome

我正在尝试在我的 chrome 扩展程序和我的 c# 应用程序之间获取本地消息传递。javascript工作正常,但我收到此错误:

与本机消息传递主机通信时出错。

正如我从任务管理器中看到的那样,该应用程序确实与扩展程序一起启动。这是我的 C# 代码。

主要功能:

JS代码:

主机清单:

0 投票
1 回答
179 浏览

c++ - 无法使用本机消息接收 10 字节的消息

我创建了一个简单的 chrome 扩展,以便通过 chrome 本机消息传递与 Windows 本机应用程序交互。

我能够在浏览器和应用程序之间发送和接收消息。但是,如果从原生应用程序发送的消息长度为 10 或 2560,则扩展的 onmessage 事件侦听器不会收到消息。

本机应用程序代码

如果我分配char *test = "{\"test\":\"\"}"(带有额外的 t),它工作正常。

我不知道这个问题的原因是什么。

请帮忙!

谢谢!

0 投票
1 回答
6828 浏览

google-chrome - chrome.runtime.connectNative 生成​​ Uncaught TypeError: undefined is not a function

我确实编写了一个 chrome 扩展,它调用这个 connect() 函数来连接到本地 C++ 程序:

我可以在控制台中看到 test1,但之后我得到了错误

在行中

我的扩展清单文件在这里:

我的 com.a.chrome_interface.json 看起来像这样:

并且 com.a.chrome_interface 是一个 linux 可执行 C++ 文件,如果它被调用并且这个文件永远不会创建,它会生成一个文件。我确实把两个文件都放进去了

所以我想,我确实正确注册了我的 C++,但我也猜想,如果我注册错了,我应该得到一个不同的错误。如果我使用 chrome.extension.connect() 脚本运行低谷并且错误消息消失但没有数据到达我的 C++ 程序。

我确实阅读并尝试按照 https://developer.chrome.com/extensions/messaging#native-messaging上的说明进行操作, 并用谷歌搜索了很多,但我可以找出问题的原因。

我在 Ubuntu 12.04 上使用 Chromium 34。

  1. 在编写扩展程序时,是否必须使用 chrome.runtime.connectNative() 或 chrome.extension.connectNative()?
  2. 如何连接并发送数据到我的 C++ 程序?
0 投票
1 回答
429 浏览

c# - 在 C# 中创建单个进程以接收多个 Chrome 原生消息

基本上我想要做的是有一个应用程序(单个进程),它将一直保持打开状态,并有一个线程去监听 Chrome 的本机消息传递。

我目前的理解是 Chrome 会为每条原生消息启动一个单独的进程。如果我要使用 Mutex 创建单个进程,那么我将无法将标准输入传递给主进程,因为我必须首先使用适当的参数再次启动该进程。Chrome 可能会类似地执行此操作,因此需要多个进程。

在我看来,必须有一个中间进程通过套接字或类似的东西来通知 Chrome 消息的主进程。是这样吗?有没有办法使用单个进程来实现这一点?

非常感谢输入!

另外作为一个侧面说明,Chrome 似乎以静默方式启动其本机消息传递应用程序进程(无显示)。这是我做错了什么还是正常的?

0 投票
1 回答
3506 浏览

json - 如何将 shell 脚本用作 Chrome 原生消息传递主机应用程序

您如何使用 bash 脚本处理 Chrome 原生消息传递 API 调用?

我用这个例子成功地用python做到了

当然我可以bash从 python 代码调用subprocess,但是是否可以跳过 python 并bash直接处理消息?

问题的部分是将 JSON 序列化消息读入变量。消息使用 JSON 进行序列化,UTF-8 编码,并通过标准输入以本机字节顺序以 32 位消息长度开头。

echo $*仅输出: chrome-extension://knldjmfmopnpolahpmmgbagdohdnhkik/

还有类似的东西

不输出任何东西。没有 JSON 消息的迹象。Pythonstruct.unpack用于此。可以在里面完成bash吗?

0 投票
1 回答
3386 浏览

google-chrome-extension - connectNative disconnects by itself in Chrome extension

I did write a chrome extension. My content script send some data to by background.js. And my background.js shell forward this data to a local C++ app. Now what happens is, my background.js can connect to the local app and send data once. But then, the connection is lost as the disconnect event occurs and a second send request fails. Reading the documentation of connectNative it says, connection is closed, if the disconnect is called or "when the page containing the port is unloaded". I don't have the disconnect at all in my code and the background.js should not be unloaded as according documentation the livetime of background.js is as long as livetime of the extension. With my code, the Test 1 and Test 2 arrive once in the target file Test.txt but send it a second time fails, as connection is lost in between.

Here the code.

background.js:

manifest.json:

chromeinterface.json:

chrome_interface.cpp:

console.log: