插件
文章平均质量分 74
z6482
这个作者很懒,什么都没留下…
展开
-
使用WaveOut接口播放WAV文件
我需要在插件中实现一边接收数据,一边展示媒体文件的功能,因此从最简单的音频文件来开始研究,绝大多数API如:playSound等都是根据完整文件来播放音频的,即便是内存模式也是需要将整个文件全部读入一片内容,然后将内存指针传递给playSound。最后逐渐寻找到WaveOut接口。要一边接收数据一边播放,首先需要得到头信息,然后使用多个缓存在WaveOutWrite中交替为音频设备填充数据。原创 2012-04-29 14:57:40 · 9949 阅读 · 1 评论 -
NPAPI插件开发详细记录:利用cmake生成插件工程
在使用firebreath的过程中,逐渐了解cmake的,生成项目非常方便,曾经我提供过一个生成插件开发基本代码的小工具,其中也有生成VS project的选项,现在我将其更新了,工具默认生成cmake需要的CMakeLists文件。对cmake我也是一个初学者,因此本文并不打算介绍cmake,如果有兴趣深入学习请自行查找相关资料,本文以添加了CMakeLists文件的scriptdemo为例,简原创 2014-04-05 16:50:22 · 7883 阅读 · 1 评论 -
NPAPI插件开发详细记录:插件的调试
这里我归纳一下我知道的在插件开发中使用的几种调试手段。附加到进程之前也提及过关于插件的调试,这里需要补充一点关于在chrome中调试插件的内容,在chrome中运行插件时,插件的进程也是chrome.exe,因此要准确的找到正确的插件进程可以为chrome添加启动参数--plugin-startup-dialog,如图:原创 2014-04-05 16:40:59 · 7216 阅读 · 0 评论 -
NPAPI插件开发详细记录:插件运行流程分析
本文详细分析插件的代码是如何执行的,主要分析np_entry.cpp、npn_gate.cpp和npp_gate.cpp.希望能够有所收获。在windows平台下,插件就是一个dll,注意到这个dll的def文件内容是:LIBRARY ""EXPORTSNP_GetEntryPoints @1NP_Initialize @2NP_Shutdown @3插件接口既然是浏览器原创 2012-06-19 20:04:55 · 16241 阅读 · 10 评论 -
NPAPI插件开发详细记录:安装包的制作
我们开发好的插件需要交给用户使用的,我们自己在开发的过程中可能有各式各样的方法来使插件可以运行,但是如果要交给用户使用,我们总不至于让用户自己去写注册表,或者让用户将咱们的dll复制到plugins目录下吧!为了让用户的安装操作简单化,介绍两种方法:按照扩展的方式将插件打包这种方式根据浏览器不同需要采取不同的打包方式,比如Firefox需要打包为xpi,而chrome则需要打包为crx。可原创 2013-04-24 10:12:07 · 20613 阅读 · 4 评论 -
NPAPI插件开发详细记录:用VS2010开发NPAPI插件步骤
前面一段时间关注了用firebreath开发插件,但是感觉用起来不是那么得心应手,还是回到NPAPI开发插件上来。本文根据NPAPI开发详解,Windows版进行开发,其中以VS2008为例进行开发,在VS2010中基本上是相同的。必须的plugin sdk,将其解压到某个目录下,我这里是:D:\Users\zcf\Documents\My Program\2012。下面是创建插件的步原创 2012-06-13 22:26:57 · 32669 阅读 · 49 评论 -
NPAPI插件开发详细记录:脚本化接口
scriptable接口的实现,与属性有关的函数为HasProperty、GetProperty、SetProperty。在JS中设置属性(以bar为例)用plugin.bar=barvalue;来设置,获取属性直接用plugin.bar;如果要为插件创建属性,必须要在HasProperty中返回true,在GetProperty一般调用NPN_GetProperty(mNpp,sWindowOb原创 2012-07-15 13:54:11 · 13840 阅读 · 7 评论 -
自行设计NPAPI开发框架
经历了一年有余的插件开发,对插件的工作机制也比较熟悉了,在开发插件的过程中使用sdk中的np_entry.cpp、npn_gate.cpp、npp_gate.cpp以及pluginbase.h这几个文件,极大的提高了插件开发的效率,使开发过程变得简单高效,但是在使用的过程中也发现了一些不足之处以及一些细微的bug。在开发过程中我已经对这几个文件进行了不同程度的修改以满足我的开发需求。虽然修改了能满原创 2012-12-21 14:57:31 · 11444 阅读 · 7 评论 -
NPAPI插件开发详细记录:实用功能——添加、识别私有属性
据我所知,除了通用属性如:id、class等,object标签的属性有type、data、width、height,embed标签的属性有type、src、width、height。而flashplayer插件所具有的loop、autoplay等属性都是插件自己添加的,无法用NPN_GetProperty接口进行获取。假设我们要开发一个插件允许使用loop属性,那该怎么实现呢?这个就要找到NS原创 2012-12-16 16:08:46 · 9547 阅读 · 0 评论 -
NPAPI插件开发详细记录:实用功能——获取插件路径、页面路径、资源路径
获取插件路径该功能不复杂,不过使用了windows提供的API故只适用于windows平台。代码如下: LPTSTR moduleName = new TCHAR[100]; GetModuleFileName(GetModuleHandle(_T("name")),moduleName,100); std::string mPath = std::string(moduleNam原创 2012-12-16 16:06:05 · 11968 阅读 · 0 评论 -
NPAPI插件开发详细记录:实用功能——改变插件窗口大小
我们有时候需要调整插件窗口的尺寸大小,比如说,当你创建一个视频播放窗口,在用户点击播放之后想要将窗口的大小调整为视频的实际大小。播放完毕之后又将窗口尺寸调整回原来的尺寸大小。要实现这样一个功能,最简单的方式是写JS来实现,只需要首先用getElementById获取插件,然后设置其width属性和height属性。但是,通常情况下我们只管编写插件,不负责网页的设计,如果我们设计完一个插件,还要原创 2012-12-16 15:56:26 · 11348 阅读 · 0 评论 -
NPAPI插件开发详细记录:插件开发入门
为什么这还是入门呢?因为前面的我们什么都没学会,只是学会了建立一个dll项目,并生成了一个Firefox可以识别dll,在测试页面中不会弹出需要下载插件的错误。而任何功能都没有实现。所以这里才是真正的入门。本文随着作者本人的学习进度逐渐深入,难免有不周全之处,请看到本文的朋友帮忙指出有误的地方。插件窗口在哪里入门篇暂时只讲述一个问题,根据我的理解,plugin创建时,浏览器会创建一个子原创 2012-06-14 23:07:25 · 20174 阅读 · 17 评论 -
NPAPI插件开发详细记录:再谈多线程
前面提到过有关多线程的问题,主要是如何在插件中创建新的线程。但是在编写多个线程的插件过程中遇到的问题比如何创建一个线程要复杂得多。一个问题是多个线程之间共享数据,该问题其实就是普通的多线程编程中也会遇到,如果有丰富的多线程程序设计的经验,那么插件编写中多线程间共享数据的问题也不算什么复杂的问题了。简单提一下我的解决方法:我让多个线程间共享数据采用的方法是首先设计一个基础的数据类,其他要使用共享数据原创 2012-07-20 22:33:31 · 9724 阅读 · 5 评论 -
NPAPI插件开发详细记录:实用功能(库的使用及多线程)
有了前面的hello world的经验,本文在其基础上研究一些实用功能的实现。库的动态加载Windows平台下,可以动态的对dll进行加载,使用到的API主要有:LoadLibrary、GetProcAddress、FreeLibrary等。下面以加载winmm.dll为例对相关代码进行简要介绍:动态加载dll,在加载之前先进行typedef,这里以实用winmm.dll中的函数P原创 2012-06-23 23:07:25 · 12814 阅读 · 2 评论 -
用firebreath开发插件
在寻找插件开发资料的过程中找到了一个开发浏览器插件的开源项目——firebreath。参考:firebreath主页。根据其介绍可以实现各种浏览器插件的开发。于是我进行了尝试,并试图搜索利用firebreath开发插件的中文资料。搜索到的相关中文资料有一个:徐凡的博客。其中有使用firebreath开发浏览器插件(一、二、三)三篇关于firebreath开发插件的文章。看完了,但是还是不怎么会。原创 2012-04-22 17:12:13 · 20455 阅读 · 4 评论 -
NPAPI插件开发详细记录:与JS交互
插件主要用于HTML页面中增强HTML页面可以支持的资源类型,在HTML页面中最重要的一个特性就是可以利用脚本语言来实现与用户的交互,之前的文章也提及过相关的议题,不过在交流过程中还是发现好多开发者对于这个主题有不太明白的地方,这里再次详细介绍一下在插件中如何与JS进行交互。以前的文章可以与本文互为参考:脚本化接口、插件接口脚本化。本文的例子代码可以下载:无boost需安装CMake、原来原创 2014-04-05 17:39:40 · 9835 阅读 · 5 评论