一 浏览器概述
关于什么是浏览器,强大的wiki已经做了比较完善的解释http://en.wikipedia.org/wiki/Web_browser。相关浏览器的比较参考:http://en.wikipedia.org/wiki/Comparison_of_web_browsers#Vulnerabilities
浏览器的核心是layout engine,基本上各浏览器只是包装,主要layout engine参考:http://en.wikipedia.org/wiki/Comparison_of_layout_engines
目前主要的浏览器为Internet Explorer, Firefox, Chrome, Safari和Opera,其余浏览器多为在此基础上的二次开发,如搜狗浏览器,Maxthon等。
二 浏览器开发
浏览器基本都支持针对性的开发,具体的开发支持分为三个层次:主题开发,只能定制浏览器的皮肤界面等;扩展开发,可以定制浏览器的一些功能响应;插件开发,真正的对于浏览器的新功能开发。常见的flash就是使用最广的浏览器插件。目前主要的插件有两种,ActiveX控件和NPAPI插件。
三 ActiveX
微软的技术基本是COM和ActiveX的天下,IE浏览器插件只支持ActiveX作为插件。具体过程比较简单,使用ATL或MFC开发一个标准的支持IE的ActiveX控件即可。
四 NPAPI
除微软外,其它浏览器核心基本都是支持NPAPI插件。NPAPI较ActiveX控件更简单,但是只针对浏览器插件。什么是NPAPI,可以参考:http://en.wikipedia.org/wiki/NPAPI
下面主要介绍一个windows32 NPAPI插件的开发实例。
(一)下载所需的头文件或SDK
可以下载GeckoPluginSDK(https://developer.mozilla.org/en/Gecko_SDK),如果觉得麻烦的话可以下载一个只包含头文件的精简版http://code.google.com/p/npapi-headers/(其中函数结构体的大小好像需要点修改)。下面使用精简版;
(二)使用Visual Studio C++建立一个DLL项目(建议选择纯空项目),添加上面下载的头文件;
添加一个Plugin.cpp作为导出函数的源代码文件,添加一个资源文件(这个必须,并且要全部填写下面的资源,否则不会被加载),添加一个.def文件。
(三)填写.def文件(windows下最少有这三个函数)
(四)填写资源文件(windows下此资源文件必须包括所有字符资源)