1. 安装与使用可参考:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> <title>VLC Embedd test</title> </head> <body> <object classid="clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921" codebase="http://download.videolan.org/pub/videolan/vlc/last/win32/axvlc.cab" <!--width="854" height="480"--> width="320" height="180" id="vlc"> <param name="ShowDisplay" value="True" /> <!--<param name="src" value="http://download.blender.org/peach/bigbuckbunny_movies/big_buck_bunny_480p_surround-fix.avi" />--> <param name="src" value="test.mov" /> <param name="Toolbar" value="True" /> <param name="Autoloop" value="False" /> <param name="Autoplay" value="True" /> <param name="Mute" value="False" /> </object> </body> </html>
2. 在2.0.0后vlc源码结构中的projects『建立在 libvlc上的项目,如Mozilla插件,ActiveX 插件』被缩减了,此前的代码可以在这里取:http://download.videolan.org/videolan/vlc/
3. TODO:嵌入网页,preview视频设备,并做些修改。
4. 待补。。。
个别与控件相关的文件:axvlc.def
LIBRARY AXVLC.DLL EXPORTS DllMain = DllMain@12 DllCanUnloadNow = DllCanUnloadNow@0 DllGetClassObject = DllGetClassObject@12 DllRegisterServer = DllRegisterServer@0 DllUnregisterServer = DllUnregisterServer@0
axvlc.idl interface desc language(接口描述语言)
axvlc_idl.c / axvlc_idl.h,能组件接口相关的定义
简单回忆一下COM组件的运作,【客户程序】【COM库:在注册表找到DLL】【组件程序:COM对象,类厂】:客户程序调用CoCreateInstance,间接调用CoGetClassObject函数;COM库找到并加载对应DLL;调用DLLGetClassObject;DLLGetClassObject函数创建类厂,并吧接口指针返回给CoGetClassObject,返回到CoCreateObject;CoCreateInstance拿到类厂后,便可以创建COM对象,类厂创建COM对象,最终返回给客户,直接调用。
对于网页与ActiveX控件的交互:
<param name="Autoplay" value="True" />属性包 IPersistPropertyBag 接口的实现方法和调用方式。
嵌入IE中得ActiveX控件,由IE创建。IE通过shdocvw.dll 对ActiveX控件进行查找名称为InitPropertyBag 或 InitStream 的 Instance 的一个子项。若找到,它将根据注册表项的内容创建一个 IPropertyBag 或 IStream(相应地),并将其传递给IPersistPropertyBag::Load 或 IPersistStream::Load 方法(相应地)。
这样ActiveX的控件很容易地自然地实现了和网页的序列化交互。
也正是由于IE和COleControl对对该接口的默认支持,因此在创建ActiveX控件的时候,程序员很容易的就可以解决属性在网页上的存储问题。