| Com接口入門細詳(二) 上一篇,簡單的詳細了com的應用,不過那不是com接口發揮作用所在,要不這種東東早就淘汰了,com的接口真正作用其實就是提供實現對象給客戶程序利用,而com又可分為進程內com(dll文件),進程外com(exe文件).
 現在讓我們來了解一下進程內com接口的應用。
 Com即然提供其中的類方法給客戶程序,那么把將要生成的dll文件,com對象表示為服務端
 (為人民服務嘛,呵呵)
 當然建com服務器
 新建activeX library
 在其中新建com對象,這基本應該大家會的吧。
 主要還是分析代碼
 unit Unit1;
 {$WARN SYMBOL_PLATFORM OFF} interface usesWindows, ActiveX, Classes, ComObj;
 typeICalculator= interface
 ['{214C8A93-C235-45DB-BEDB-460DA54F3B01}']
 function Add(x,y:Integer):Integer;safecall;
 function Mult(x,y:Integer):Integer;safecall;
 end;
 TCalculator = class(TComObject, ICalculator)
 注冊表尋找guid值
 type
 ICalculator= interface
 ['{214C8A93-C235-45DB-BEDB-460DA54F3B01}']
 function Add(x,y:Integer):Integer;safecall;
 function Mult(x,y:Integer):Integer;safecall;
 end;
   TForm1 = class(TForm)Label1: TLabel;
 Label2: TLabel;
 Label3: TLabel;
 Label4: TLabel;
 Edit1: TEdit;
 Edit2: TEdit;
 Edit3: TEdit;
 Edit4: TEdit;
 Button1: TButton;
 procedure Button1Click(Sender: TObject);
 procedure FormCreate(Sender: TObject);
 private
 { Private declarations }
 public
 { Public declarations }
 FCal:ICalculator;
 end;
 var
 Form1: TForm1;
 implementation
 {$R *.dfm}
 uses ComServ;
 procedure TForm1.Button1Click(Sender: TObject);
 begin
 Edit3.Text:= IntToStr(FCal.Add(StrToInt(Edit1.Text), StrToInt(Edit2.Text)));
 Edit4.Text:= IntToStr(FCal.Mult(StrToInt(Edit1.Text), StrToInt(Edit2.Text)));
 end;
 procedure TForm1.FormCreate(Sender: TObject);begin
 CoCreateInstance(Class_Calculator,nil,CLSCTX_INPROC_SERVER,ICalculator,FCal);//建立com對象實例
 end;
 end.――――――――――――――――――――――――――――――――――――
 搞定當然我們要向系統注冊這個com對象文件,要不客戶如何應用,
 當然注冊這個dll依照這個guid值的來的,這是唯一的,
 注冊com對象文件
 Regsvr32 dll文件路徑
 ――――――――――――――――
 對于上一篇的代碼還不夠簡單,讓大家再簡單的com接口應用
 unit Unit1;
 interface usesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;
 typeTForm1 = class(TForm)
 Button1: TButton;
 procedure Button1Click(Sender: TObject);
 private
 { Private declarations }
 public
 { Public declarations }
 end;
 end;
 procedure TForm1.Button1Click(Sender: TObject);
 var pggpjj:ipggpjj;
 beginpggpjj:=Tpggpjj.Create;
 pggpjj.pggpjj1;
 end; |