谷歌打包应用原生消息传递

Google Packaged App Native Messaging

本文关键字:原生 消息传递 应用 包应用 谷歌      更新时间:2023-09-26

我有一个Windows控制台应用程序和一个Chrome打包的应用程序,我正在尝试进行双向通信。我已经遵循了他们在python应用程序中的示例,但我没有任何运气。

我采取了以下步骤:

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

  2. 我已经在该位置创建了 json 文件:{"名称": "my.app.name","描述": "Chrome 原生消息传递 API","path": "c:''path''to''my.app.name''consoleApp.exe","类型": "标准","allowed_origins":["铬-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;
    }
    

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

"指定的本机消息传递主机名无效">

我已经尝试过用我能想到的各种方式来玩这个,但没有太多的文档或示例代码(几乎没有(。有人有什么想法吗?

谢谢

刚开始工作!尝试将"路径"更改为"consoleApp.exe"(使用我之前的所有建议(,并将您的应用程序放入与应用程序清单相同的文件夹中。然后检查任务管理器,您将看到您的进程已完成。祝你好运。

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