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.DLLEXPORTS 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控制項的時候,程式員很容易的就可以解決屬性在網頁上的儲存問題。