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

85
如何从Google Chrome扩展程序启动外部应用程序?
基本上,我有一个可执行文件,当您启动它时,它会完成工作。我需要能够在没有窗口的情况下启动它(它是控制台应用程序),并将当前URL作为参数传递给它。

22
如果有神的话,那么Google绝不会允许任何人在任何情况下做这件事情。 - Azeem.Butt
这个问题在谷歌上有很好的页面排名,所以对于任何正在寻找答案的人来说,这可能会很有帮助。在谷歌Chrome市场上有一个扩展程序可以完全解决这个问题: https://chrome.google.com/webstore/detail/hccmhjmmfdfncbfpogafcbpaebclgjcp - Kent Aleksandrov
1
可能是从Chrome扩展程序执行程序的重复问题。 - msangel
@msangel,由于您提到的问题是在此之后出现的,因此应将其视为重复。 - C.Champagne
4个回答

87

我认为你可以使用FileIO实现,具体请参考:https://developer.chrome.com/native-client/pepper_stable - i336_

27

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

例如,您可以让用户设置some-app://链接启动"SomeApp",然后在my-awesome-extension中打开一个指向some-app://some-data-the-app-wants的选项卡,这样就可以了!


4
链接已过期。 - Alston
1
已存档的页面,用于死去的“自定义协议”链接:https://web.archive.org/web/20210601082308/https://support.shotgunsoftware.com/hc/en-us/articles/219031308-How-to-launch-external-applications-using-custom-protocols-rock-instead-of-http-?mobile_site=true - Jesper

4

本机消息主机

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

example:

// 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,其最终目标是能够使用浏览器作为输入,然后在本地打开指定文件(如有可能,无需使用鼠标)。

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

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

参考资料


2

我倾向于使用假设,因为现在无法验证。

使用Apache,如果你在本地计算机上创建一个调用可执行文件的php脚本,然后通过html/javascript通过POST或GET调用这个脚本,它会正常运行吗?

请告诉我。


2
当然,如果Apache进程具有所需的权限,这将起作用,但是当您需要在用户计算机上安装Apache并打开Web服务器端口时,这还有什么意义呢? - Pacerier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接