Firefox浏览器插件开发-总结

前两年做了一个浏览器的插件,当时资料很难找到,只有看Firefox源码里面的例子,反复测试使用例子,才按例子的模式把功能做出来。


需要的头文件:    npapi.h   npfunctions.h

代码文件:  

    np_entry.cpp          

            主要实现几个函数:

                   NPP_GetMIMEDescription :mimetype类型描述    浏览器根据这个值来查找插件

                   NP_GetEntryPoints           :插件函数列表   规定的一系列函数,NPP_开头    放在下面的npp_gate.cpp    插件提供给浏览器能使用的函数功能

                  NP_Initialize                      : 初始化信息,   Windows 上面 NP_GetEntryPoints    NP_Initialize(一个参数),   一起使用,unix Linux 上面只调用NP_Initialize(两个参数)

                  NP_Shutdown                   :插件关闭时调用

                  NP_GetValue                     :

                 NP_GetPluginVersion          :插件版本


     npp_gate.cpp      插件提供给浏览器能使用的函数功能

             把例子文件拷贝过来,只要修改几个函数就可以

            char* NPP_GetMIMEDescription(void)
          {
                  return  "application/x-xxxx-npblos";                    //mimeytype类型
            }

         

           NPError NPP_New(NPMIMEType pluginType,
                NPP instance,
                uint16_t mode,
                int16_t argc,
                char* argn[],
                char* argv[],
                NPSavedData* saved)
      {
        
            if(instance == NULL)
                     return NPERR_INVALID_INSTANCE_ERROR;

             NPError rv = NPERR_NO_ERROR;

             //
            PluginObject *obj = NULL;
            //创建一个自定义的插件对象
             obj = static_cast<PluginObject*>( (void *)NPN_CreateObject( instance, getPluginClass() ) );
    
              if( obj == NULL )
                return NPERR_OUT_OF_MEMORY_ERROR;

              //
              instance->pdata = (void *)obj;

             return rv;
        }

  npn_gate.cpp    浏览器提供的 供插件使用的功能

       不用修改。

  plugin.cpp    实现插件功能的主要文件

      NPClass *getPluginClass(void);     返回插件对象的函数集合

static NPClass pluginClass = {
    NP_CLASS_STRUCT_VERSION,
    pluginAllocate,
    pluginDeallocate,
    pluginInvalidate,
    pluginHasMethod,
    pluginInvoke,
    pluginInvokeDefault,
    pluginHasProperty,
    pluginGetProperty,
    pluginSetProperty,
    pluginRemoveProperty,
    pluginEnumerate
};
 
NPClass *getPluginClass(void)
{
    return &pluginClass;
}


上面的函数都要实现。

具体看example吧。


第一次写博客,很慢,不熟练。做个记录吧。



    

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值