5

我的目的是为 Windows 用户创建一个 chrome 插件。是否可以从 Native Client /PPAPI 调用 windows api。如果可能怎么办?

4

2 回答 2

4

我正在回答我的问题,因为经过一些研究,我发现西方的答案有点不对。我尝试在 Pepper(PPAPI) 插件中调用 Windows API,它可以与命令行开关“--register-pepper-plugins”(不是 West 指定的--no-sandbox)一起正常工作。使用这个命令行属性似乎更安全,因为它只是在 Chrome 浏览器中注册一个插件,而不是删除任何沙箱。我想在找到一个正在使用的实际辣椒插件后添加一个答案,该插件使用开关(用于 chromeos 的 NetFlix 辣椒插件)。

有更多信息要添加。Chrome API 可以提供多显示器信息:chrome.systemInfo.display对象提供所有必要的信息。chrome 文档未更新。需要注意的重要一点是,要在清单中添加“systemInfo.display”权限以使用此对象。在此对象的功能中报告了两个错误。
1. 所有监视器的监视器名称都相同“通用即插即用监视器”,文档声称提供监视器的用户友好名称。
2. 有一个事件应该在监视器的分辨率更改时被调用,但该事件永远不会被调用。

Currently the implementation is only for Windows OS. Support for other OS are on the way. Documentation says that the API is only available for Chrome App, but I haves tested that and the API is available on Chrome Extensions as well.

于 2013-06-10T08:37:17.147 回答
2

不幸的是,简短的回答是“不”。Native Client 被设计为独立于操作系统并且与 JavaScript 一样安全。将 Native Client 视为具有与 JavaScript 相同的功能和限制的本机代码。进行 Windows API 调用的 Native Client 模块会破坏这两个设计原则:它不能在例如 Mac 上运行,并且会带来重大的安全风险(想象一下浏览到决定从其中删除文件的网页)你的硬盘)。

既然您提到了 Chrome,您可能会很想知道 Web 应用程序(无论它们使用 JavaScript 还是 Native Client)都可以在 Chrome 网上应用店中作为打包应用程序请求额外的权限。但是,由于上面列出的原因,本机操作系统调用仍然是不可能的。

NPAPI 插件没有这些限制,但是 NPAPI 的未来,至少在 Chrome 中是不确定的(参见http://blog.chromium.org/2012/07/npapi-plug-ins-in-windows的最后一段-8-metro-mode.html )。

出于开发目的,可以使用命令行标志 --no-sandbox 关闭 Chrome 的外部沙箱,然后运行直接调用操作系统的 PPAPI 插件。这适用于开发人员,不适合最终用户使用。

如果您可以多说一些关于您想要实现的目标,可能有一些方法可以使用 Native Client/Pepper 来做到这一点。

于 2012-12-27T17:29:03.133 回答