82

如何从 Google Chrome 扩展程序启动外部应用程序?

所以基本上我有一个可执行文件,当你启动它时它可以完成这项工作。我需要能够在没有窗口的情况下启动它(它是一个控制台应用程序)并在参数中将当前 URL 传递给它,

4

6 回答 6

85

以前,您将通过NPAPI 插件来执行此操作。

但是,Google 现在正在逐步淘汰 Chrome 的 NPAPI,因此首选的方法是使用本机消息传递 API。外部应用程序必须注册本机消息传递主机才能与您的应用程序交换消息。

于 2013-11-12T06:51:34.053 回答
25

您不能启动任意命令,但如果您的用户愿意进行一些额外的设置,您可以使用自定义协议

例如,您让用户进行设置,以便some-app://链接开始“SomeApp”,然后在my-awesome-extension您打开一个指向 的选项卡some-app://some-data-the-app-wants,您就可以开始了!

于 2016-08-21T00:31:44.997 回答
2

我选择假设,因为我现在无法验证。

使用 Apache,如果您在本地计算机上创建一个调用可执行文件的 php 脚本,然后通过 POST 或通过 html/javascript 的 GET 调用此脚本?

它会起作用吗?

让我知道。

于 2016-07-20T09:46:02.780 回答
1

Chrome 有一个扩展(SimpleGet),它有一个适用于 Windows 和 Linux 的插件,可以使用命令行参数执行应用程序.....
http://pinel.cc/
http://code.google.com/p/简单获取/
http://www.chromeextensions.org/other/simple-get/

于 2011-10-07T08:27:07.390 回答
0

问题在谷歌上有很好的页面排名,所以对于任何正在寻找这个问题的答案的人来说,这可能会有所帮助。

谷歌浏览器市场空间中有一个扩展可以做到这一点: https ://chrome.google.com/webstore/detail/hccmhjmmfdfncbfpogafcbpaebclgjcp

于 2013-08-22T09:05:50.880 回答
0

本机消息传递主机

Chrome 扩展程序

{
  "name": "AppName",
  "description": "",
  "version": "1.0",
  "manifest_version": 3,
  "permissions": [
    "nativeMessaging"  //  https://developer.chrome.com/docs/extensions/mv3/declare_permissions/
  ]
  // ...
}

主持人

添加架构

@echo off
:: If you add "/f" then you can force write.
REG ADD "HKCU\Software\Google\Chrome\NativeMessagingHosts\com.my_company.my_application" ^
 /ve /t REG_SZ ^
 /d "%~dp0Mymanifest.json"
// Mymanifest.json
{
  "name": "com.my_company.my_application",
  "description": "My Application",
  "path": "relative_dir/my.exe",
  "type": "stdio",
  "allowed_origins": [
    "chrome-extension://nbjjflbnekmabedahdolabcpahfjojjb/"
  ]
}

chrome.runtime.sendNativeMessage

例子:

// your.js
chrome.runtime.sendNativeMessage("com.my_company.my_application",
  {key1: "value1", key2: "value2"}, //  Send those parameters to your program.
  (response) => {
    console.log(response)
  }
)

示例存储库

我创建了一个项目thunder/e11fde9,其最终目标是能够使用浏览器作为输入,然后在本地打开一个指定的文件(如果可能,不用鼠标)

它仍在开发中,但我认为早期的代码已经足够了。链接如下。

其中已经有记录浏览器传输结果的日志,同时浏览器也可以获取程序的返回值。

参考

于 2021-09-15T06:57:04.960 回答