5

我有一个 Windows 控制台应用程序和一个 chrome 打包应用程序,我正在尝试进行两种方式的通信。我已经按照他们使用 python 应用程序的示例进行操作,但我没有任何运气。

我已采取以下步骤:

  1. 在我的注册表中创建此条目 HKEY_LOCAL_MACHINE\SOFTWARE\Google\NativeMessagingHosts: my.app.name : c:\path\to\my.app.name.json

  2. 我已经在那个位置创建了 json 文件: { "name": "my.app.name", "description": "Chrome Native Messaging API", "path": "c:\path\to\my.app .name\consoleApp.exe”、“类型”:“stdio”、“allowed_origins”:[“chrome-extension://offmjeicniagcebcbclkdlkllfibllfh/”]}

  3. 我在打包的应用程序脚本中添加了以下内容:

    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;
    }
    

当我单击调用连接函数的按钮时,我收到此错误:

“指定的本机消息传递主机名无效”

我已经尝试过所有我能想到的方法,但是没有太多的文档或示例代码(几乎没有)。有没有人有任何想法?

谢谢

4

2 回答 2

3

刚刚成功了!尝试将“路径”更改为“consoleApp.exe”(以及我之前的所有建议)并将您的应用程序放入与应用程序清单相同的文件夹中。然后检查任务管理器,您将看到您的流程有效。祝你好运。

于 2013-10-19T13:44:12.037 回答
0

起初,我认为您在“Google”和“NativeMessagingHosts”之间的注册表路径中错过了“Chrome”。据我了解, my.app.name 应该是键而不是值。无论如何,它对我没有帮助:(我还为 x64 和 x86 注册表项创建了相同的密钥。

于 2013-10-19T06:23:05.190 回答