在C++中使用NPAPI开发Chrome扩展



我想使用NPAPI在C++中开发一个简单的Chrome扩展,它可以将当前页面的HTML内容转储到文件中。我在开发插件/扩展方面没有太多专业知识。我该如何开始?

1-创建扩展。。。http://code.google.com/chrome/extensions/getstarted.html

2-创建一个NPAPI插件。。。http://colonelpanic.net/2009/03/building-a-firefox-plugin-part-one/

3-在你的扩展清单上添加插件。。。

"plugins": [
    { "path": "your_npapi_plugin.dll" }    
  ],

4-在您的扩展后台页面上创建插件

<script>
var plugin = document.getElementById("MyNPAPIPluginId");
...
</script>

5-创建一个javascript,用作在每个页面上注入的内容脚本。在该脚本上,与您的npapi可脚本化对象进行通信,并完成您想要做的工作。


如何获取MyNPAPIPluginId的值?我所拥有的只是DLL的名称?

当你添加插件的标签时,你会在后台页面上放置id

<embed type="application/my-plugin-mimetype" id="MyNPAPIPluginId">

在Windows上,在DLL的资源文件上添加MIMEType,添加一个带有以下内容的条目:

VALUE "MIMEType", "application/my-plugin-mimetype"

这里有一个插件可以帮助您
http://code.google.com/p/npapi-file-io/
…消息来源也在那里。这个插件将允许你在一个文件中写入一个字符串(你的html)以及其他一些好东西。不幸的是,Windows和Linux
然后你所需要做的就是写一个脚本来转储你想要的东西。

正如smorgan在评论中指出的那样,这类插件有可能相当危险
因此,当您将插件添加到清单时,请确保将公共属性设置为false
http://code.google.com/chrome/extensions/npapi.html

 "plugins": [
    { "path": "plugin.dll", "public": false }
  ]

在未来(Chrome 18),您应该使用清单版本2…
http://code.google.com/chrome/extensions/trunk/manifestVersion.html

此外,我认为您希望在没有任何用户输入的情况下保存文件。如果这不是真的,并且每次都有一个对话框来选择保存文件的位置是可以接受的,那么这可以在不使用插件的情况下完成。

最新更新