COM程序編寫入門(一)

字號:

考試大計算機等級站整理收集:
    名詞解釋:
    OLE: (Object linking and embedding對象的鏈接與嵌入)
    使得服務(wù)器模塊和客戶模塊通過標(biāo)準(zhǔn)的接口進(jìn)行通訊。兩個模塊可以在同一臺計算機或位于不同的計算機上,位置對用戶來說是無關(guān)緊要的。服務(wù)器模塊實現(xiàn)了一組接口,客戶模塊通過這組接口進(jìn)行通訊。
    COM: (Component object modal組件對象模型)
    實現(xiàn)了OLE的功能,具體可完成一下功能:
    l 編寫供多種語言使用的代碼;
    多種語言:指的是建立好的COM組件不在乎訪問它的編程語言,任何一種編程語言只要知道COM組件的接口,訪問是都能完成同樣的功能。
    l 創(chuàng)建ActiveX控件;
    l 通過OLE Automation操縱其他應(yīng)用程序;
    如:Microsoft Excel的OLE編程接口,創(chuàng)建對象后,任何一種程序都可以實現(xiàn)對Excel的操作。
    l 與其他計算機上的應(yīng)用程序通訊;
    實際為COM接口與接口之間的通訊,因其實現(xiàn)了不同語言、不同計算機的方式,所以實現(xiàn)不同計算機上應(yīng)用程序的通訊也就十分容易。
    COM模塊:
    COM的模塊指獨立的應(yīng)用程序(EXE)或者動態(tài)連接庫(DLL),在實現(xiàn)COM時,采用DLL方式要比較容易一些。因為:應(yīng)用程序在加載時在內(nèi)存中都是獨立的地址控件,而DLL加載后可以駐留內(nèi)存。當(dāng)多個客戶端調(diào)用COM時,如果采用EXE形式,就會有多個EXE被加載,而且COM處理客戶端的訪問時,也必須在不同的地址空間來回切換,大費周張。而DLL形式永遠(yuǎn)只有一個駐留內(nèi)存,COM只要在相同的內(nèi)存空間中尋找執(zhí)行代碼即可。
    逐步深入:
    DLL我們都已經(jīng)寫了很多,通常我們寫的DLL都是定義的一些方法或是過程來實現(xiàn)特定的操作,當(dāng)然定義的出口(Exports)也就是這些方法或是過程?,F(xiàn)在我們來寫一個出口為一個類的DLL來展開我們COM編寫的學(xué)習(xí)。
    準(zhǔn)備工作:
    打開Delphi,選擇File\New\Others,選擇DLL Wizard自動創(chuàng)建一個DLL工程,選擇File\New\Unit新建一個單元,全部保存。
    寫代碼:
    在新建的Unit中定義一個抽象類:
    Type
    TCalculator=Class
    Public
    Function Addition (Op1, Op2: Double): Double ; virtual; abstract;
    End;
    這個類很簡單,就定義了一個抽象方法實現(xiàn)兩個數(shù)的相加。
    定義抽象類后,定義一個類來實現(xiàn)這個抽象類:
    Type
    TCalcImple=Class (TCalculator)
    Public
    Function Addition (Op1, Op2: Double): Double; Override;
    End;
    方法實現(xiàn):
    Function TCalcImple.Addition(Op1, Op2: Double): Double;
    Begin
    Result: =Op1+Op2;
    End;
    當(dāng)然我們還差一個創(chuàng)建這個類的方法,我們在加入如下:
    Function CreateCalcImple:TCalcImple;stdcall;
    Begin
    Result:=TCalcImple.Create;
    End;