从Chrome应用运行外部程序

时间:2016-04-09 08:52:15

标签: google-chrome

所以我已经半夜摔跤这个,并且没有在Google或SO上找到任何明确的答案,所以请原谅我可能会问一个重复的问题。 :)

所以我一直在研究如何从谷歌Chrome应用程序运行本机应用程序,虽然我认为我已经达到了所需数量的75%,但我仍然有更多的问题而不是答案。我已经阅读了有关“本机消息”的所有文档,包括调试部分,但似乎还没有足够的文档(我猜测Chrome应用程序仍然是一个新概念,这就是Google的大部分文档是为了扩展)。无论如何这里是一些代码:

chrome.app.window.create('index.html', {
    id: 'main',  // Tried replacing this with the app ID found in chrome://extensions; still didn't work.
    bounds: { width: 200, height: 500 }
});

    // Looks simple enough, I'll explain the randomness later :)
    chrome.runtime.sendNativeMessage("test1", { text: "whatever" });

});

我将我的原生应用程序注册为“主机”,并且运行正常。这是看起来像:

REG ADD "HKCU\Software\Google\Chrome\NativeMessagingHosts\test1" /ve /t REG_SZ /d "C:\\My 

Stuff \ Code \ Projects \ Desktop \ MyProject \ source \ native.json“/ f 这是该位置的文件:

{
    "name": "native_app",
    "description": "A native app (in this case an AutoHotkey script)",
    "path": "native.exe",
    "type": "stdio",
    "allowed_origins": [
        "chrome-extension://gielahlojnnpjhamfiebdcppafijhppb"
    ]
}

最终结果:

TypeError: chrome.runtime.sendNativeMessage is not a function

所以,现在我要回答问题:

  1. 我已经看到我自己的代码“不是函数”错误,并且通常知道如何解决它;但既然这是指向谷歌的API ...... ????显然,谷歌在某个地方定义了它,或者它不在他们的文档中;那还有什么可能导致它咳出这个错误?我在SO上找到的最接近的是某人试图从扩展中的内容脚本发送本机消息(无关)。所以调试这个goober将是fuuuuun ...:/ lol idk

  2. 我注意到在“allowed_origins”下它表示“扩展” - 我应该用“app”替换它,因为它是Chrome应用程序吗?文档没有说明。

  3. Chrome应用和扩展程序的chrome。* API是否相同?我对扩展所做的大部分工作都是内容脚本,所以我真的不确定,但它们看起来很可怕,所以也许呢?这可以解释为什么大多数文档和帖子只用于扩展(但是如果是扩展或应用程序则无关紧要。)

  4. 而且我有很多其他人,但这对一个帖子来说已经足够了,哈哈。谢谢! :)

1 个答案:

答案 0 :(得分:1)

很抱歉回答我自己的问题(反正#1):问题是我的清单文件中的权限。它不是一个功能"因为我没有添加那部分。但现在它返回未定义(并且响应文本未定义)所以我仍然有太多的研究要做(而且它就像凌晨4点,哈哈)。所以问题2& 3仍然开放。再次感谢。