【问题标题】:How to write a C++ FireFox 3 plugin (not extension) on Windows?如何在 Windows 上编写 C++ FireFox 3 插件(不是扩展)?
【发布时间】:2010-09-08 22:39:51
【问题描述】:

有人能写出一步一步的指南来为 Windows 上的 FireFox 开发基于 C++ 的插件吗?

http://www.mozilla.org/projects/plugins/ 上的链接和示例都是旧的且不准确的 - “新”链接是 2004 年添加到页面的。

这个例子可以是任何东西,但我在想一个插件,让 JavaScript 设置名称,然后显示“Hello {Name}”。为了显示双向通信,它可以有一个返回完整称呼的属性。

虽然没那么重要,但如果插件也能在 Chrome 中运行就好了。

【问题讨论】:

    标签: c++ windows firefox plugins


    【解决方案1】:

    如果您需要跨浏览器(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! =]

    祝你好运!

    【讨论】:

    • 哇,伙计,你刚刚救了我的培根,感谢您提供了令人难以置信的 api 和全方位的英雄贡献。
    【解决方案2】:

    另见http://developer.mozilla.org/en/Plugins。是的,NPAPI 插件也应该在 Google Chrome 中工作。

    [2015 年编辑:Chrome 即将移除对 NPAPI 的支持 http://blog.chromium.org/2014/11/the-final-countdown-for-npapi.html]

    【讨论】:

      【解决方案3】:

      使用 NPAPI 制作插件相当简单。 Gecko 发行版中需要的关键头文件是 npapi.h 和 npupp.h。您将使用名称 NP_Initialize、NP_Shutdown、NP_GetMIMEDescription 和 NP_GetValue 从插件 DLL 或共享库中导出函数,并且您还需要使用所有 NPP 的处理程序填写 NP_Initialize 调用中提供给您的符号表功能。

      从该集合中实现的关键函数是 NPP_New 和 NPP_Destroy。这些定义了插件实例的生命周期。如果您要处理从 链接的媒体文件,您还需要处理 NPP_NewStream、NPP_WriteReady、NPP_Write 和 NPP_DestroyStream 作为插件从浏览器。 the Gecko Plugin developer's guide 中还有更多内容。

      【讨论】:

        【解决方案4】:

        查看 Nixysa http://code.google.com/p/nixysa/。我尝试在 Mozilla SDK 中构建示例,但构建起来很困难。 Nixysa 示例很容易构建。加上代码比直接使用 NPAPI 更简洁。唯一的缺点是截至今天 Nixysa 没有很好的文档记录。如果你愿意,我有一个 Nixysa 示例,它可以实现回调(我确实计划在处理它时向 Nixysa 提交一个补丁)。

        【讨论】:

        • 您是否尝试过将其作为扩展程序?我还没有找到可以构建的单个 NPAPI Visual Studio 解决方案!如果您仍然拥有它,我想看看您拥有的代码,以及如何构建它的说明...... nixysa 有解决方案文件,例如“复杂”,但它也不能编译。使用 scons 可以编译示例,但编译后的 dll 已损坏,缺少内容(?),并且 Chrome 找不到插件的方法。谢谢。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-01-22
        • 1970-01-01
        • 2012-02-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-13
        相关资源
        最近更新 更多