如何在Windows上编写C ++ FireFox 3插件(非扩展名)?
有人可以编写逐步指南,以在Windows上为FireFox开发基于C ++的插件吗?
http://www.mozilla.org/projects/plugins/上的链接和示例都很旧,并且不准确," NEW"链接已于2004年添加到该页面。
该示例可能是任何东西,但我当时在考虑一个插件,该插件可以让JavaScript设置名称,然后显示" Hello {Name}"。为了显示双向通讯,它可以具有一个返回完整称呼的属性。
虽然不那么重要,但是如果插件也可以在Chrome中运行也很好。
解决方案
回答
使用NPAPI制作插件非常简单。从Gecko发行版中需要的关键头文件是npapi.h和npupp.h。我们将从插件DLL或者共享库中导出名称为NP_Initialize,NP_Shutdown,NP_GetMIMEDescription和NP_GetValue的函数,并且还需要使用所有NPP处理程序填写NP_Initialize调用中给符号表。功能。
从该集合中实现的关键功能是NPP_New和NPP_Destroy。这些定义了插件实例的生命周期。如果要处理从<object>或者<embed>链接的媒体文件,则还需要处理NPP_NewStream,NPP_WriteReady,NPP_Write和NPP_DestroyStream,作为插件从文件中获取文件数据的一种方式。浏览器。 Gecko插件开发人员指南中还有更多内容。
回答
另请参见http://developer.mozilla.org/en/Plugins。是的,NPAPI插件也应在Google Chrome浏览器中运行。
[edit 2015:Chrome即将取消对NPAPI的支持http://blog.chromium.org/2014/11/the-final-countdown-for-npapi.html]
回答
查看Nixysa http://code.google.com/p/nixysa/。我试图在Mozilla SDK中构建示例,但是很难构建。 Nixysa样本易于构建。另外,代码比直接使用NPAPI更加整洁。唯一的缺点是,截至目前,Nixysa的文献记录还不够完善。我有一个Nixysa示例,如果我们愿意的话,它可以实现回调(我确实打算在解决该问题时向Nixysa提交补丁)。
回答
如果我们需要跨浏览器的东西(firefox和ie),可以查看firebreath:http://www.firebreath.org
有关"如何在Windows上构建npapi插件"的一般信息,我有一些关于该主题的博客文章(也链接到上述一些来源)
http://colonelpanic.net/2009/03/building-a-firefox-plugin-part-one/
但是,我确实建议使用Firebreath,因为我们是为没有时间进行几个月(从字面意义上)进行研究的人们创建的,它使我们弄清了所有工作原理。但是,如果我们不想将其用作插件的基础,则仍然可以在其中找到很多很好的示例代码。
应该也可以在Windows的chrome,firefox和safari上使用! =]
祝你好运!