我的目的是为Windows用户创建一个chrome插件。是否可以从Native Client / PPAPI调用windows api。如果可能的话怎么办?
答案 0 :(得分:4)
我正在回答我的问题,因为经过一些研究,我发现West的答案有点不对。我尝试在Pepper(PPAPI)插件中调用windows API,它可以通过命令行开关“--register-pepper-plugins”(不是West指定的--no-sandbox)工作。使用此命令行属性似乎更安全,因为它只是在Chrome浏览器中注册插件而不删除任何沙箱。我想在找到一个正在使用的实际胡椒插件后添加一个答案,它使用了开关(用于chromeos的NetFlix胡椒插件)。
了解更多信息。 Chrome API可用,它提供多显示器信息: chrome.systemInfo.display 对象提供所有必要信息。 chrome文档未更新。 需要注意的重要一点是,要在清单中添加权限“systemInfo.display”以使用此对象 。此对象的功能中报告了两个错误。
1。 所有显示器“Generic PnP Monitor”的显示器名称相同,文档声称提供用户友好的显示器名称。
2. 有一个事件应该在监视器的分辨率更改时调用,但事件永远不会被调用。
目前,该实施仅适用于Windows操作系统。其他操作系统的支持正在进行中。 文档说该API仅适用于Chrome应用,但我已经对其进行了测试,并且Chrome也可以在Chrome扩展程序中使用。
答案 1 :(得分:2)
不幸的是,简短的回答是'不'。 Native Client被设计为独立于操作系统并且与JavaScript一样安全。将Native Client视为具有与JavaScript相同功能和限制的本机代码。进行Windows API调用的Native Client模块将破坏这两个设计原则:它不会在例如Mac上运行,这将是一个主要的安全风险(想象一下浏览到决定从中删除文件的网页你的硬盘)。
由于您提及Chrome,因此您可能会感兴趣的是,您知道网络应用程序 - 无论是使用JavaScript还是Native Client - 都可以在Chrome网上应用店中请求additional permissions作为打包应用。但是,由于上面列出的原因,仍然无法进行本机OS调用。
NPAPI插件没有这些限制,但NPAPI的未来,至少在Chrome中是不确定的(参见http://blog.chromium.org/2012/07/npapi-plug-ins-in-windows-8-metro-mode.html的最后一段)。
出于开发目的,可以使用命令行标志--no-sandbox关闭Chrome的外部沙箱,然后运行直接调用OS的PPAPI插件。这适用于开发人员,不适合最终用户使用。
如果你可以多说一些你想要实现的目标,可能有办法用Native Client / Pepper做到这一点。