opera插件开发2

本文详细介绍了如何开发Opera浏览器的插件,特别是针对音乐和Flash等内容的处理。通过创建DLL文件并设置版本信息,使得Opera能够识别和调用插件。浏览器首先调用NP_GetEntryPoints获取插件函数表,然后通过NP_Initialize和NP_Shutdown进行初始化和释放。NPP_New函数在创建插件实例时被调用,接收页面中embed标签的参数。开发者可以通过NPN_系列函数通知浏览器执行特定操作。文章还提供了一个VC2003工程示例,帮助读者实践Opera插件开发。

 开发方法三:
或许这种方式开发出来的才是真正的插件。
开发这种插件用于处理opera无法处理的东西,比如音乐,opera不会播放,只能通过插件播放,其他的如flash,视频,pdf文档等,这些opera不会也没能力来处理这些东西,只有这些东西的发明者才会知道如何处理,因此他们开发插件来给opera用。
opera所识别的插件是一个dll文件,只要将此插件放在opera插件目录(/Opera/program/plugins),opera自会识别,打开opera,在地址栏输入:opera:plugins,即可看到opera所找到的插件。
如:
opera显示以下:
Shockwave Flash
              application/futuresplash spl
              application/x-shockwave-flash swf
              D:/Program Files/Opera/Program/Plugins/NPSWF32.dll
表明opera找到一个叫Shockwave Flash的插件,这个插件用来处理网页中application/futuresplash和application/x-shockwave-flash类型的东西
opera官网说opera实现了网景(NETSCAPE)4.0的插件接口,即可以拿网景(NETSCAPE)4.0的插件开发sdk来开发opera插件

以下将以一个例子来讲opera插件的开发。(例子是由vc开发,作用是处理application/x-mplayer2)
首先要设置版本,opera是通过版本信息来识别插件的
用文本编辑器直接打开资源文件rc,在版本信息(  BLOCK "StringFileInfo")里添加三项
            VALUE "FileExtents", "x-mplayer2"                                  //一般显示处理文件的后缀
            VALUE "FileOpenName", "x-mplayer2(*.mp3)"                                 //此无关紧要,不过大多数插件都有
            VALUE "MIMEType", "application/x-mplayer2"         //显示要处理的类型
注意opera是通过FileExtents和MIMEType来识别插件处理的类型
application/rar 对应 rar
application/zip 对应 zip
(更多参考信息可以查看其他插件的版本信息)
然后将工程语言改为"英语(美国)",Code Page改为"Windows 3.1 拉丁语 1 (美国、西欧)版".
[用vc打开版本信息,修改Block Header]
通过以上步骤即可让opera识别到这个插件

浏览器调用插件一般是以下顺序
浏览器执行顺序
浏览器调用NP_GetEntryPoints获得插件实现的函数表
浏览器调用NP_Initialize传递浏览器实现的函数表
浏览器调用NP_Shutdown释放插件;
所以必须将这三个函数接口导出
本人将它再封装了一下,即每次调用插件,浏览器会依次调用以下各个函数
//第一次加载插件时初始化
NPError NPP_Initialize(void)

浏览器调用这个创建实例;
NPP_New

浏览器调用这个来告诉插件窗口已经准备好了或改变大小了
NPP_SetWindow

调用这个函数删除由NPP_New创建的插件实例
NPP_Destroy;

在浏览器不需要插件时调用以释放插件
NP_Shutdown

浏览器可能还会调用一些其他函数,如NPP_NewStream,NPP_DestroyStream等,但本人研究有限,亦不知何时调用。
在以上五个函数中,最重要的是NPP_New
函数定义:
NPError NP_LOADDS NPP_New(NPMIMEType pluginType, NPP instance,
        uint16 mode, int16 argc, char* argn[],
        char* argv[], NPSavedData* saved);
这个函数在浏览器创建插件时调用,其中argc是参数的个数,argn是参数名称,argv是参数值,这三个参数相当重要
假如页面中信息为
<embed
type="application/base-plugin"
width=600
height=40
src="http://www.music.com/test.mp3">

argc = 4
argn = {"type", "width", "height", "src"}
argv = {"application/base-plugin", "600", "40",
"http://www.music.com/test.mp3"}
当浏览器碰到  
<embed src="http://fans.elanzhou.net/UpLoadmusiceFile0109/2004111047884549.mp3" align="baseline" align="0" width="350" height="68"
   type="application/x-mplayer2"
   pluginspage=""
   name="MediaPlayer1" showcontrols="1" showpositioncontrols="0"
   showaudiocontrols="1" showtracker="1" showdisplay="0"
   showstatusbar="1"
   autosize="0"
   showgotobar="0" showcaptioning="0" autostart="1" autorewind="0"
   animationatstart="0" transparentatstart="0" allowscan="1"
   enablecontextmenu="1" clicktoplay="0"
   defaultframe="datawindow" invokeurls="0">
  </embed>
(以上代码在百度试听mp3页面里截取)
浏览器就会调用我们这个插件,调用NPP_New函数
我们在这个函数里new一个CData对象,用来保存一个插件实例的数据,并将对象地址赋于instance->pdata,这样在NPP_SetWindow和NPP_Destroy里就可以通过传进来的instance参数获取到我们new出来的对象了,我们将src,align,align等属性存到CData里,方便以后获取到。
浏览器接着会调用NPError NP_LOADDS NPP_SetWindow(NPP instance, NPWindow* window)来设置窗口
我们先通过instance获取new出来的CData,并将window里的opera提供的窗口的句柄和大小等保存,然后我们就可以在这窗口里做任何事情了。

如果想通知浏览器做某些事情,这个sdk也提供了很多函数,函数前用NPN_命名,我也将所有的通知浏览器函数提取出来放到class NetscapeFuncs类里,其中只有一些函数我知道干什么的,其他不了解
如:Status  告诉浏览器状态栏应该显示的信息
如果哪位对opera插件开发感兴趣的话,可以一起研究探讨。
附例子程序(vc2003工程):
http://www.namipan.com/d/e6e0168f02bb7bab22d4368f704a18e7e53ccf2a5fe80000
打开程序后,注意以下几点,
1.需要修改输出文件路径,我是写的D:/Program Files/Opera/program/plugins/mp3.dll。你请写你要输出的路径
2.启用插件,除了放到插件目录里,还需要打开opera首选项:高级:下载里,搜索x-mplayer2,将此类型打开方式选择使用插件opera_sdk demo,这样opera碰到application/x-mplayer2就会调用这个插件了
3.程序会写一个log文件,路径在R:盘,如果你需要改变盘符,在AddtoLog函数里可以改
4.可以打开百度mp3音乐试听来测试此插件,此插件会在opera窗口中不断移动hello opera!文字

Opera是全球浏览速度最快的浏览器,这一点果然名不虚传。但是一些网页由于不符合W3C规范,在浏览的时候,经常显示不正常。我们不得不再打开IE重新浏览,有些麻烦。在这一点上,Firefox,有比较有名的IE Tab,轻轻一点,不用打开IE,就可以随时调用IE核心来浏览网页了,那么Opera有没有类似的插件呢?答案是肯定的,按照以下步骤就可以实现了。 1.下载MeadCo_Neptune.exe。你可以打http://www.meadco.com/neptune/download/ 页面 填上你的名字,邮箱,点“Continue"就可以下载了。如果你嫌麻烦,也可以到这个地址直接下载: http://my.opera.com/亡灵法师/homes/files/MeadCo_Neptune.exe 2. 用WInRAR解压文件,得到npmeadax.dll,把它复制到X:\Program Files\Internet Explorer\PLUGINS\下(X:为你的操作系统所在的盘符。)然后注册。比如在C盘,则在“运行”里输入regsvr32 "c:\Program Files\Internet Explorer\PLUGINS\npmeadax.dll"。记得""和空格一定要带哦,否则会注册不成功的。再把npmeadax.dll复制到Opera的安装目录下Program\Plugins文件夹下。仍然要注册一下。比如Opera安装在C:\Program Files\Opera\Program\Plugins\,下,则在“运行”里输入regsvr32 "C:\Program Files\Opera\Program\Plugins\npmeadax.dll". 3.打开Opera,工具——外观——按钮——我的按钮,把“View in IE”用鼠标拖到工具栏任意位置即可。(这是在Opera9.10版本中的位置,其他版本可能会有所不同。)   这样一来,网页浏览是不是方便多了?
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值