我正在创建一个需要打开用户指定的本地文件的chrome应用程序,并且需要打开这个文件,他们选择的浏览器。现在有了chrome应用程序,我已经想到了它们在chromebook上的条件,所以请将它放在一边。
我有一些浏览器exe
文件位置的可能性。这是我的
Chrome Locations
C:\Program Files (x86)\Google\Chrome\Application
Firefox Locations
C:\Program Files (x86)\Mozilla Firefox
IE Locations
C:\Program Files (x86)\Internet Explorer
Edge Locations
C:\Windows\SystemApps\Microsoft.MicrosoftEdge_------- (not sure if the end is a key so removed)
所以基本上我在考虑使用PNaCl
或NaCl
来使用Google的Native Client来使用C ++并使用ShellExecute
,除非我不确定如何合并文件位置和用户指定的浏览器。
他们想要打开Microsoft Edge
并运行index.html
void main()
{
ShellExecute(NULL, "open", "C:\Windows\SystemApps\Microsoft.MicrosoftEdge_-------",
NULL, NULL, SW_SHOWNORMAL);
}
似乎Google在Manifest中允许它,所以这里是示例
{
"name": "My extension",
...
"plugins": [
{ "path": "extension_plugin.dll" }
],
...
}
所以真的如何编写一个干净的dll
文件来执行文件位置和浏览器位置。然后再读一遍,我明白了,
Marking your NPAPI plugin "public" increase the attack surface of your extension because the plugin is exposed directly to web content, making it easier for a malicious web site to manipulate your plugin. Instead, avoid making your NPAPI plugin public whenever possible.
我不希望任何人对可能是恶意的东西感到不满,我只需要它来运行本地浏览器,也可能比查找每个可能的位置更容易找到文件位置。谢谢你提前。
在你迷路的情况下重复提问。
答案 0 :(得分:1)
您错过了引用的NPAPI页面顶部的重要链接;它是no longer possible to publish extensions than use NPAPI,下一个版本将删除所有NPAPI支持。如果要与本机应用程序通信,则需要使用Native Messaging作为桥接(有关详细信息,请参阅有关从Chrome启动应用程序的其他问题)。
对于NaCl,它不允许您调用任意Windows API。