我有一个Windows控制台应用程序和一个Chrome打包的应用程序,我试图让双向通信。我跟着他们使用python应用程序的例子,但我没有运气。
我采取了以下步骤:
在HKEY_LOCAL_MACHINE \ SOFTWARE \ Google \ NativeMessagingHosts的注册表中创建了此条目: my.app.name:c:\ path \ to \ my.app.name.json
我在该位置创建了json文件: { “name”:“my.app.name”, “description”:“Chrome Native Messaging API”, “path”:“c:\ path \ to \ my.app.name \ consoleApp.exe”, “type”:“stdio”, “allowed_origins”:[ “铬扩展:// offmjeicniagcebcbclkdlkllfibllfh /” ] }
我在打包的应用脚本中添加了以下内容:
function connect() {
var hostName = "my.app.name";
appendMessage("Connecting to native messaging host <b>" + hostName + "</b>")
port = chrome.runtime.connectNative(hostName);
port.onMessage.addListener(onNativeMessage);
port.onDisconnect.addListener(onDisconnected);
}
function appendMessage(text) {
document.getElementById('messages').innerHTML += "<p>" + text + "</p>";
}
function onNativeMessage(message) {
appendMessage("Received message: <b>" + message + "</b>");
}
function onDisconnected() {
appendMessage("Failed to connect: " + chrome.runtime.lastError.message);
port = null;
}
当我点击调用connect函数的按钮时,我收到此错误:
“指定了无效的本机消息传递主机名”
我尝试过各种我能想到的方式,但是没有太多的文档或示例代码(几乎没有)。有没有人有任何想法?
谢谢
答案 0 :(得分:3)
刚刚搞定了!尝试将“path”更改为“consoleApp.exe”(包含我之前的所有建议)并将您的应用程序放入与应用程序清单相同的文件夹中。然后检查任务管理器,您将看到您的过程有效。祝你好运。
答案 1 :(得分:0)
首先,我认为您在“Google”和“NativeMessagingHosts”之间的注册表路径中错过了“Chrome”。据我所知,my.app.name应该是一个键,而不是一个值。 无论如何,它对我没有帮助:( 我还为x64和x86注册表项创建了相同的密钥。