如何从Google Chrome扩展程序启动外部应用程序?
基本上,我有一个可执行文件,当您启动它时,它会完成工作。我需要能够在没有窗口的情况下启动它(它是控制台应用程序),并将当前URL作为参数传递给它。
基本上,我有一个可执行文件,当您启动它时,它会完成工作。我需要能够在没有窗口的情况下启动它(它是控制台应用程序),并将当前URL作为参数传递给它。
以前,你需要通过NPAPI插件来实现这一功能。
然而,Google正在逐步淘汰Chrome的NPAPI插件,因此最好的方法是使用本地消息传递API。外部应用程序需要注册一个本地消息传递主机,以便与您的应用程序交换消息。
您不能启动任意命令,但如果您的用户愿意经过一些额外的设置,您可以使用自定义协议。
例如,您可以让用户设置some-app://
链接启动"SomeApp",然后在my-awesome-extension
中打开一个指向some-app://some-data-the-app-wants
的选项卡,这样就可以了!
{
"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,其最终目标是能够使用浏览器作为输入,然后在本地打开指定文件(如有可能,无需使用鼠标)。
它仍在开发中,但我认为早期的代码已经足够了。以下是链接。
该项目已经有一个记录浏览器传输结果的日志,同时浏览器也可以获取程序的返回值。
我倾向于使用假设,因为现在无法验证。
使用Apache,如果你在本地计算机上创建一个调用可执行文件的php脚本,然后通过html/javascript通过POST或GET调用这个脚本,它会正常运行吗?
请告诉我。