Google Packaged App Native Messaging

Kyw*_*lis 5 javascript windows google-chrome google-chrome-app chrome-native-messaging

我有一个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","type":"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;
    }
    
    Run Code Online (Sandbox Code Playgroud)

当我单击一个调用connect函数的按钮时,我收到此错误:

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

我试过用我能想到的每一种方式玩这个但是没有太多文档或示例代码(几乎没有).有没有人有任何想法?

谢谢

小智 3

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

  • 我最近又回到这里进行进一步测试。主机名的另一个要求是它必须全部小写。 (4认同)
  • 这非常有帮助,谢谢。据我所知,我还发现有关主机命名约定的未记录要求。我的主机被命名为“myHostingApplication”。当我将其更改为“my.hosting.application”时,它开始起作用。谷歌可以对命名约定有任何他们喜欢的限制,但如果他们不记录它,他们就会让生活变得悲惨。 (3认同)