轉自:http://blog.sina.com.cn/s/blog_4ca9ceef0100ixzb.htmlhtml
1、OCX(OLE Control Extensio,OLE Object Linking and Embedded)組件的來歷是怎樣的?程序員
對象連接和嵌入用戶控件(是一種能夠由在微軟的Windows系統中運行的應用軟件建立使用的特殊用途的程序,定義 ActiveX控件.ActiveX控件是可重用的軟件組件。 用途 使用它能夠很快地在網址、臺式應用程序、以及開發工具中加入特殊的功能。ActiveX控件的使用者能夠無需知道這些組件是如何開發的,即可以完成網頁或應用程序的設計。web
.OCX文件是OCX對象連接和嵌入用戶控件(是一種能夠由在微軟的Windows系統中運行的應用軟件建立使用的特殊用途的程序)的擴展名,下來講說什麼是OCX控件! 說說什麼是OCX控件? 若是你用過Visual Basic或者Delphi一類的可視化編程工具,那麼對控件這個概念必定不會陌生,就是那些工具條上的小按鈕,如EditBox,Grid,ImageBox,Timer等等。每一個控件都有本身的事件(事件) 、方法(方法)和屬性(屬性)。使用了控件的編程很是容易。編程
首先,在程序的設計階段能夠設置一些屬性,如大小,位置,標題(caption)等等;在程序運行階段,能夠更改這些屬性,還能夠針對不一樣的事件,調用不一樣的方法來實現對該控件的控制。控件就好象一塊塊的積木,程序要作的事只是將這些積木搭起來。控件的最大好處是能夠重複使用,甚至能夠在不一樣的編程語言之間使用,例如你能夠在VB中嵌入用VC開發的控件。控件的本質是微軟公司的對象連接和嵌入(OLE)標準。因爲它充分利用了面向對象的優勢,使得程序效率獲得了很大的提升,從而獲得了普遍的應用。國外有不少公司就是專門製做各類各樣控件的。控件的最先形式是以.VBX的格式出現的,後來變成了.OCX。小程序
因爲Internet的普遍流行,微軟公司推出了ActiveX技術,就是從OLE發展起來的,加入了WWW上的功能。因此目前最流行的是ActiveX控件。 對象連接和嵌入用戶控件(OCX)是一種能夠由在微軟的Windows系統中運行的應用軟件建立使用的特殊用途的程序。OCX提供操做滾動條移動和視窗恢復尺寸的功能。若是你有Windows系統,你會發如今你的Windows地址錄裏有大量OCX文件名後綴的文件。 對象連接和嵌入(OLE)被設計來支持混合文檔(包含多種資料類型,好比文本、繪畫圖像、聲音、動畫)。瀏覽器
Windows桌面就是一個混合文檔的範例,微軟使用OLE(Object Linking and Embedded,OLE)對象的連接與嵌入來創建的。OLE和組件對象模型(COM繼OLE後的更經常使用的概念)支持「即插即用」程序的發展,「即插即用」程序在系統中能夠用任何語言寫入並能夠由任何應用程序動態地使用。這些程序被認爲是他們在其上運行的Container的組建和應用程序。這種基於組件的近似應用程序的發展縮減了程序調試時間並改善了程序的性能和品質。Windows應用發展程序(好比PowerBuilder和Microsoft Access)具備OCX的優點。安全
2、OLE和OCX的關係是什麼?服務器
OLE和OCX通稱對象連接與嵌入。OLE與OCX的應用主要是源於將多個應用信息源組合到一塊兒的目標。OCX獲得普遍的應用,由於它能更好的與應用程序相結合,從而實現很差實現或是很難實現的功能。實際上, Visual Basic等等其它程序會提供多處實現特定功能的OCX控件。經過它們,咱們能夠很是容易的實現一些自己不能實現的功能。
3、控件與DLL的關係是什麼?網絡
組件的前身是動態連接庫(DLL),DLL使咱們可以用一種語言開發一個能夠用於任何其餘語言的過程庫。DLL的另外一個強大的功能是在運行期間被加載的,這使得咱們可以將開發任務劃分爲一個個組件而沒必要開發並靜態連接一個大型應用程序。
關於DLL的介紹數據結構
DLL,動態連接庫,Dynamic Link Library的縮寫,是一個包含函數和數據的模塊集合,能夠被其它應用程序共享的程序模塊。DLL做爲共享函數庫的可執行文件,封裝了一個或多個已被編譯、連接的函數。多個進程能夠同時使用一個 DLL,在內存中共享該 DLL 的一個副本。DLL 還有助於共享數據和資源。 它和可執行文件(.EXE文件)很是相似,他們的區別在於 DLL 中雖然包含了可執行代碼卻不能單獨執行,只能由須要使用它的應用程序來直接或間接調。[
通俗的說,在Windows操做系統中,許多應用程序並非一個完整的可執行文件,它們的正確執行須要調用一些相對獨立的動態連接庫,即DLL文件。一個應用程序能夠調用多個DLL文件,一個DLL文件也可能被幾個應用程序所共用,這樣的DLL文件被稱爲共享 DLL 文件。[2]DLL 文件通常被存在C:\Windows\System 目錄下,也可能放在應用程序所在的目錄或是子目錄中。
提到動態連接,先說明一下靜態鏈接。什麼是靜態鏈接呢?在程序連接的過程當中,須要將編譯後的二進制代碼連接成目標代碼,連接器從靜態連接庫中得到全部被引用的函數,並將這些被引用的函數同代碼一塊兒放到可執行文件中。那麼關於 DLL 的靜態鏈接則是指連接器將被引用的庫函數的代碼複製到調用 DLL 的可執行模塊(.dll 文件或 .exe 文件)中。
什麼是動態連接呢?動態連接是系統容許可執行模塊(.dll 文件或 .exe 文件)在運行程中,只須要包含在定位 DLL 函數的可執行代碼所需的信息。換句話說,可執行模塊(.dll 文件或 .exe 文件)在運行時加載這些模塊(亦即所需的模塊映射到調用進程的地址空間)。
那麼動態連接和靜態鏈接 相比,優勢有哪些呢?
(1)節省內存,減小交換操做。使用動態連接,多個進程能夠同時使用一個 DLL,在內存中共享該 DLL 的一個副本。使用靜態連接,每一個應用程序都包含被引用的庫函數的代碼,那麼Windows 必須在內存中爲每一個應用程序加載引用的庫函數的代碼的一個副本。
(2)節省磁盤空間。使用動態連接,在磁盤上僅須要 DLL 的一個副本。使用靜態連接,每一個應用程序都包含被引用的庫函數的代碼。
(3)更易於升級。使用動態連接,DLL 中的函數發生變化時,只要函數的參數和返回值沒有更改,就不需從新編譯或從新連接使用它們的應用程序。使用靜態連接,在函數發生變化時,須要從新連接來生成應用程序。
(4)支持多語言程序,只要程序遵循函數的調用約定,用不一樣編程語言編寫的程序就能夠調用相同的DLL 函數。
(5)提供擴展 MFC 庫類的機制。能夠從現有 MFC 類派生類,並將它們放到 MFC 擴展 DLL 中供 MFC應用程序使用。
(6)支持多語言程序,並使國際版本的建立輕鬆完成。經過將資源放到 DLL 中,建立應用程序的國際版本變得容易得多。可將用於應用程序的每一個語言版本的字符串放到單獨的 DLL 資源文件中,並使不一樣的語言版本加載合適的資源。[4]
DLL 中包含下面兩類函數的定義:
導出函數:這些函數由可執行模塊(.dll 文件或 .exe 文件)調用。
內部函數:這些函數僅從定義它們的 DLL 中調用。DLL 還導出數據。不過,這些數據由相應的函數使用。
能夠經過下列方式調用 DLL 中的函數:
加載時動態連接:可執行模塊執行顯式調用以導出 DLL 函數。爲 DLL 建立導入庫,而後將 DLL 連接到應用程序。在加載應用程序時,導入庫提供加載 DLL 和查找導出的 DLL 函數所需的信息。
運行時動態連接:在運行時加載 DLL 時,可執行模塊使用 LoadLibrary 函數或 LoadLibraryEx 函數。可執行模塊調用 GetProcAddress 函數以獲取導出的 DLL 函數的地址。在連接時,Windows 搜索預安裝的一組 DLL,例如性能庫 (Kernel32.dll) 和安全庫 (User32.dll)。而後,Windows 按如下順序搜索DLL:
1.當前進程的可執行程序所在的目錄。
2.當前目錄。
3.Windows 系統目錄。(GetSystemDirectory 函數獲取 Windows 系統目錄的路徑。)
4.Windows 目錄。(GetWindowsDirectory 函數獲取 Windows 目錄的路徑。)
5.PATH 環境變量中列出的目錄。注意:LIBPATH 環境變量不用於搜索。[3]
DLL 有一個特殊的入口點(DllMain 函數),它在附加和分離進程和線程時運行。此行爲容許根據須要建立和銷燬數據結構。文件擴展名爲 .ocx、.cpl 和 .drv 的文件類型也是 DLL,儘管文件擴展名已改變。
您能夠經過建立 DLL 實現如下目的:
(1)將程序劃分爲可按需加載的單獨模塊。
(2)存儲特定於語言或特定於區域的資源。
(3)使您本身的應用程序可以使用核心代碼庫。
(4)生成進程內 COM 對象或 ActiveX 控件 (OCX)。
(5)將 OLE 對象用做進程內 DLL。這一用法可改進 OLE 連接的性能。
(6)使用控制面板擴展或使用某些類型的驅動程序。
4、什麼是ActiveX插件(控件)?
根據微軟權威的軟件開發指南MSDN(Microsoft Developer Network)的定義,ActiveX插件之前也叫作OLE控件或OCX控件,它是一些軟件組件或對象,能夠將其插入到WEB網頁或其它應用程序中。
ActiveX(COM)技術是一種嵌入式程序技術,它其實就是OLE和 OCX的融合。 ActiveX是Microsoft提出的一組使用COM(Component Object Model,部件對象模型)使得軟件部件在網絡環境中進行交互的技術。 它與具體的編程語言無關。做爲針對Internet應用開發的技術 ,ActiveX被普遍應用於WEB服務器以及客戶端的各個方面。同時,ActiveX技術也被用於方便地建立普通的桌面應用程序。在Applet中可使用ActiveX技術 ,如直接嵌入 ActiveX控制,或者以ActiveX技術爲橋樑,將其它開發商提供的多種語言的程 序對象集成到Java中。與Java的字節碼技術相比,ActiveX提供了「代碼簽名 」(Code Signing)技術保證其安全性。
ActiveX是Microsoft的元素軟件標準。簡單地說,ActiveX技術是一種共享程序數據和功能的技術。它由微軟提出並大力推廣,並已成爲事實上的標準。 ActiveX技術是Microsoft對OLE技術的更新和發展,Microsoft公司爲了適應網絡的高速發展把它的OLE技術和OCX技術融爲一體並加以改進造成聯合標準,改進以後賦予新名字ActiveX。也就是說,ActiveX中涵蓋了OLE的全部技術和功能,同時又具備許多新的特性,以適應網絡發展的須要。
ActiveX指的是一組包括控件、DLL和ActiveX文檔的組件,它一般以動態連接庫的形式存在,其設計思想是將一個程序(好比Flash動畫)嵌入到另外一個程序中(這個程序一般被稱作容器,好比Authorware、Delphi、VB、VC、Internet Explorer等)。藉助這種技術使得用戶在一個程序中所建立的信息能夠被集成到其它程序所產生的文檔中。.這樣就可以使它(如Flash動畫)能夠隨意地應用到各類場合。
ActiveX控件的數據輸入和函數功能執行都必須經過容器,所以ActiveX控件和容器之間必須有一些特定的接口協議。ActiveX控件必須具有以下的性能機制:
屬性和方法:ActiveX控件必須提供屬性的名稱、方法的名稱及參數,經過這項機制,容 器能夠存取和改變ActiveX控件的屬性參數。
事件:ActiveX控件由這項機制通知容器在ActiveX控件中發生的事件,好比屬性參數的改變,用戶按下鼠標左鍵等。
雖然在本質上ActiveX和OLE是同一種技術(實現不一樣程序的數據和功能的共享),但其目的有所差異。ActiveX的目的主要是共享程序模塊之間的計算功能,生成一些專門的能夠嵌入其餘程序中的「小程序」,例如Microsoft web瀏覽器控件可使得別的應用程序可以瀏覽(僅僅是瀏覽而不是建立)Web網頁。
ActiveX控件是一個模塊化的靈活對象,若是某個應用程序或網頁須要增長一項特殊的功能,則無須重寫整個程序,只要靈活地插入一個具備此項功能的ActiveX控件便可實現,ActiveX的優點還在於它的動態可交互性,用戶能夠動態地在使用過程當中,經過改變它的屬性和參數,在應用程序中實現本身的特殊要求。
5、什麼是COM?
爲了提供使對象可以與主應用程序通訊的一種標準,微軟原來引入了對象連接和嵌入(OLE)。原來規範的目標是提供一種途徑,使應用程序,如Excel可以將電子表格嵌入到其餘支持OLE標準的應用程序中。那時,人們認識到,OLE支持一種技術的基礎,這種技術使得可以共享類屬的對象,即組件對象模型(COM)。這種概念用於爲OCX組件建立一種組件規範。這將咱們帶到了當前的標準ActiveX和ActiveX控件,OLE和OCX的發展最終造成了COM的頂尖產物。
能夠將COM看做是在兩塊代碼之間共享組件的二進制標準。COM根據對象能夠完成的功能使得對象實現抽象化。對象能夠完成的功能在其接口部分描述。接口就是對象能夠實現的一組在邏輯上相關功能的訪問方法。每一個對象都擁有一個惟一的類ID(CLSID),它使用任意的一組接口。全部類必須具備IUNKNOWN接口,這個接口又能夠被用於訪問這個類支持的任何接口。這是一種功能強大的對象模型,由於它使應用程序可以在運行過程當中肯定任意一個對象是否能夠完成某一項任務。
COM對象是經過幾個方法來實現的。能夠將COM對象編譯成DLL或OCX,它們能夠與調用應用程序在相同的進程空間中運行。COM對象還能夠象編譯過的可執行文件同樣在它本身的進程空間中運行。利用分佈式COM(DCOM),對象能夠運行在不一樣的機器上,便可以運行在世界的任何位置。儘管COM對象的實現代碼可能處於不一樣的進程中或不一樣的機器上,但COM對象系統服務去除了調用COM對象的複雜性。ActiveX組件是COM對象,這些對象實現了一套基本的接口,使組件可以被嵌入到能夠主控ActiveX組件的應用程序中去。
6、OLE與COM的關係是什麼?
組件對象模型COM(Component Object Model)是OLE的心臟,它不但提供了一個實現OLE的框架,還爲一整類新軟件提出了一種全新的設計思想。它是一種面向對象的結構,定義了一套對象間相互通訊的標準方式,規定了如何使一些小的、定義良好的軟件模塊在系統中共存並充分地相互做用。依照這種結構,能夠將若干元件組合起來,以創建更大的和更復雜的系統。
7、ActiveX的來歷是怎樣的?
ActiveX的演變最先能夠回溯到早期的剪切和粘貼以及後來的OLE(Object Link and Ember——對象的連接與嵌入)技術。實質上,ActiveX已經不只僅是一個技術上的問題,而是微軟的整個Internet戰略的中心環節。微軟把它的OLE和OCX技術融爲一體並加以改進,將所造成的聯合標準命名爲ActiveX。ActiveX把控件規範得更加精練,使得這些控件更加小巧並且效率更高,同時增強了其接口對數據和特性的管理。ActiveX能夠幫助應用程序開發者、Web網頁製做者創建動態的Internet工具、網頁和站點。
實際上能夠將Microsoft提供的ActiveX控件當作是一個小的應用程序庫。這些小程序對外提供接口,能夠編寫腳本語言(如用Vbscript等語言編寫)並對其進行控制,這樣就能使網頁更加生動。
8、OLE控件的宗旨是什麼?
OLE控件的思想在於:開發出即插即用的可重複利用的代碼,使第三方用戶開發的控件很容易在本身的開發環境中獲得應用。它的實質就是,用現有構件(控件)構造程序,即構件式軟件。
9、對象嵌入(OCX)通俗的叫法是什麼?
咱們日常所說的窗口套窗口就是對象嵌入的一種。
10、OCX和DLL的區別
以.ocx爲後綴名的ActiveX控件是一種比較特殊的DLL,它的基礎是OLE和COM,是有交互界面的可視化控件,定義了控件的屬性和方法,定義控件可引起的事件的響應。咱們一般說的.DLL爲後綴名的文件是一個包含函數和數據的模塊集合,能夠被其它應用程序共享的程序模塊。
11、關於以.ocx爲後綴名的ActiveX控件
文件擴展名爲 .ocx、.cpl 和 .drv 的文件類型也是 DLL。 如今的ActiveX 控件等價與之前的OLE控件或OCX,一個典型的控件包括設計時和運行時的用戶界面,惟一的IDispatch接口定義了控件的屬性和方法,惟一的 IConnectionPoint接口定義控件可引起的事件。一個控件能夠在容器中運行,因此從運行的角度看它相似與一個DLL。[5]
儘管 ActiveX 和 OLE 都基於組建對象模型(Component Object Model,COM),它們爲程序員提供的倒是大相徑庭的服務。COM提供的是低級的對象捆綁機制,該機制支持對象之間的交互通信。OLE使用COM來提供低級的應用服務,例如採用鏈接和嵌入機制,支持用戶建立複合文檔。與之不一樣,ActiveX提供更精細的結構,用以支持在網絡站點上嵌入控件,以及對事件的交互反應。優化ActiveX,目的是爲了提升時間和空間效率,而優化OLE,是爲了便於終端用戶的使用和集成臺式系統的應用程序。ActiveX還爲Internet技術帶來了一些技術上的變革,例如,ActiveX大大減少了代碼量(代碼量減小了百分之五十到七十),支持更多的提交和異步鏈接。 [6]
ActiveX的基礎是OLE和COM,可是經過MS的各類開發工具能夠屏蔽掉COM模型中許多另人費解的技術細節。ActiveX組件技術包括如下一些方面:(1)自動化服務器 (2)自動化控制器 (3)控件 (4)COM對象 (5)文檔 (6)容器 。
以.ocx爲後綴名的ActiveX控件主要應用在WEB上和Window Forms程序開發上。應用程序使用ActiveX/COM組件來擴展自身的業務邏輯、事務處理和應用服務的範圍。
順便提一下以.ocx爲後綴名的ActiveX控件的註冊和卸載方法,在「開始」菜單的「運行」輸入如下代碼完成任務:
regsvr32 path & "\xxx.ocx" '註冊
regsvr32 /u path & "\xxx.ocx" '卸載
其中path表明該xxx.ocx因此在的目錄的路徑
Activex、OLE、COM、OCX、DLL之間的區別
熟悉面向對象編程和網絡編程的人必定對ActiveX、OLE和COM/DCOM這些概念不會陌生,可是它們之間到底是什麼樣的關係,對許多們仍是比較模糊的。在具體介紹它們的關係之間,咱們仍是先明確組件(Component)和對象(Object)之間的區別。
組件是一個可重用的模塊,它是由一組處理過程、數據封裝和用戶接口組成的業務對象(Rules Object)。組件看起來像對象,但不符合對象的學術定義。
它們的主要區別是:
1)組件能夠在另外一個稱爲容器(有時也稱爲承載者或宿主)的應用程序中使用,也能夠做爲獨立過程使用;
2)組件能夠由一個類構成,也能夠由多個類組成,或者是一個完整的應用程序;
3)組件爲模塊重用,而對象爲代碼重用。如今,比較流行的組件模型有COM(Component Objiect Module,對象組件模型)/DCOM( Distributed COM,分佈式對象組件模型)和CORBA(Common Object Request Broker Architecture,公共對象請求代理體系結構)。
到這裏,已經出現了與本文相關的主題COM,而CORBA與本文無關,就不做介紹。
之因此從組件與對象的區別提及,是想讓你們明確COM和 CORBA是處在整個體系結構的最底層,若是暫時對此還不能理解,不妨繼續往下看,最後在回過頭看一看就天然明白了。
如今開始闡述ActiveX、OLE和COM的關係。首先,讓你們有一個整體的概念,從時間的角度講,OLE(Object Linking and Embedded) 對象連接和嵌入是最先出現的,而後是COM和ActiveX;從體系結構角度講,OLE和ActiveX是創建在 COM之上的,因此COM是基礎;單從名稱角度講,OLE、ActiveX是兩個商標名稱,而COM則是一個純技術名詞,這也是你們更多的據說ActiveX和OLE的緣由。
既然OLE是最先出現的,那麼就從OLE提及,自從Windows操做系統流行以來,「剪貼板」( Clipboard)首先解決了不一樣程序間的通訊問題(由剪貼板做爲數據交換中心,進行復制、粘貼的操做),可是剪貼板傳遞的都是「死」數據,應用程序開發者得自行編寫、解析數據格式的代碼,因而動態數據交換(Dynamic Data Exchange,DDE)的通訊協定應運而生,它可讓應用程序之間自動獲取彼此的最新數據,可是,解決彼此之間的「數據格式」轉換仍然是程序員沉重的負擔。
對象的連接與嵌入(Object Linking and Embedded,OLE)的誕生把原來應用程序的數據交換提升到「對象交換」,這樣程序間不但得到數據也一樣得到彼此的應用程序對象,而且能夠直接使用 彼此的數據內容,其實OLE是Microsoft的複合文檔技術,它的最第一版本只是瞄準複合文檔,但在後續版本OLE2中,導入了COM。
因而可知,COM是應OLE的需求而誕生的,因此雖然COM是OLE的基礎,但OLE的產生卻在COM以前。 COM的基本出發點是,讓某個軟件經過一個通用的機構爲另外一個軟件提供服務。COM是應OLE 的需求而誕生,但它的第一個使用者倒是OLE2,因此COM與複合文檔間並無多大的關係,實際上,後來COM就做爲與複合文檔徹底無關的技術,開始被普遍應用。
這樣一來, Microsoft就開始「染指」通用平臺技術。可是COM並非產品,它須要一個商標名稱。而那時Microsoft的市場專家們已經選用了OLE做爲 商標名稱,因此使用COM技術的都開始貼上了 OLE的標籤。雖然這些技術中的絕大多數與複合文檔沒有關係。Microsoft的這一作法讓人產生這樣一個誤解OLE是僅指複合文檔呢?仍是不僅僅指複合文檔?其實OLE是COM的商標名稱,天然不只僅指複合文檔。但Microsoft本身恐怕沒法解釋清楚,這要花費至關的精力和時間。
因而,隨着Internet的發展,在1996年春,Microsoft改變了主意,選擇ActiveX做爲新的商標名稱。ActiveX是指寬鬆定義的、基於COM的技術集合,而OLE仍然僅指複合文檔。固然, ActiveX最核心的技術仍是COM。
ActiveX 和OLE的最大不一樣在於,OLE針對的是桌面上應用軟件和文件之間的集成,而ActiveX則以提供進一步的網絡應用與用戶交互爲主。到這裏,你們應該對 ActiveX、OLE和COM三者的關係有了一個比較明確的認識,COM纔是最根本的核心技術,因此下面的重點介紹COM。
讓對象模型徹底獨立於編程語言,這是一個很是新奇的思想。這一點從C++和Java的對象概念上,咱們就能有所瞭解。但所謂COM對象到底是什麼呢?爲了便於理解,能夠把COM看做是某種(軟件)打包技術,即把它看做是軟件的不一樣部分,按照必定的面向對象的形式,組合成能夠交互的過程和以組支持庫。
COM對象 能夠用C++、Java和VB等任意一種語言編寫,並能夠用DLL或做爲不一樣過程工做的執行文件的形式來實現。使用COM對象的瀏覽器,無需關心對象是用什麼語言寫的,也無須關心它是以DLL仍是以另外的過程來執行的。從瀏覽器端看,無任何區別。這樣一個通用的處理技巧很是有用。例如,由用戶協調運行的兩個應用,能夠將它們的共同做業部分做爲COM對象間的交互來實現(固然,如今的OLE複合文檔也能作到)。爲在瀏覽器中執行從Web服務器下載的代碼,瀏覽器可把它看做是COM對象,也就是說,COM技術也是一種打包可下載代碼的標準方法(ActiveX控件就是執行這種功能的)。甚至連應用與本機OS進 行交互的方法也能夠用COM來指定,例如在Windows和Windows NT中用的是新API,多數是做爲COM對象來定義的。可見,COM雖然起源於複合文檔,但卻可有效地適用於許多軟件問題,它畢竟是處在底層的基礎技術。 用一句話來講,COM是獨立於語言的組件體系結構,可讓組件間相互通訊。
隨着計算機網絡的發展,COM進一步發展爲分佈式組件對象模型,這就是DCOM,它相似於CORBA的ORB,本文對此將再也不作進一步的闡述。經過上面的講述相信你們必定對ActiveX、OLE和COM/DCOM的關係有了一個清楚的瞭解。
使用Windows的人對於ActiveX控制必定不會陌生,它提供了一種相似於DLL動態連接庫的調用,不過它與DLL的惟一區別就是ActiveX不註冊 不能被系統識別並使用。那麼,當咱們獲得一個ActiveX沒有被正確安裝且不能使用的消息後,又要安裝ActiveX怎麼辦呢?
1.Regsvr32程序法在Windows的System文件夾下有一個regsvr32.exe的程序,它就是Windows本身帶的ActiveX註冊和反註冊工具。利用它也可以很是方便地註冊AcitveX控件,它的用法爲:regsvr32/u/s/n/idllname, dllname其中dllname爲ActiveX控件文件名,建議在安裝前拷貝到System文件夾下參數有以下意義:
/u - 反註冊控件
/s - 無論註冊成功與否,均不顯示提示框
/c - 控制檯輸出
/i - 跳過控件的選項進行安裝 (與註冊不一樣)
/n - 不註冊控件,此選項必須與/i 選項一塊兒使用
例如筆者要註冊一amovie.ocx控件,則打入 regsvr32 amovie.ocx便可,要反註冊它時只需使用 regsvr32 /u amovie.ocx就好了。
2.註冊表 法所謂註冊AcitveX,無非是將一些信息記錄在Windows的註冊表中,如Shockwave Flash Object控件,咱們能夠運行Regedit.exe註冊表編輯程序,利用關鍵字進行搜索,而後把搜索獲得後的註冊表導出爲一REG註冊表文件,再將其相應的ActiveX文件拷貝到Windows的System文件夾(通常ActiveX的文件名爲OCX,安裝在Windows的System文件夾 內)下,最後在要安裝ActiveX的機器上雙擊導入剛纔導出的註冊表文件便可完成安裝。
總結:Activex,OLE,COM都是微軟的一些技術標準。Ole比較老後來發展成Activex,再後來發展成爲COM OCX,DLL是擴展名。 Activex有兩種擴展名OCX和DLL。實際上你能夠把它們的擴暫名字調換。 COM做爲ActiveX的更新技術,擴展名也有多是DLL DLL文件還有多是動態連接庫。主要是裝載一些函數,能夠動態加載。