ActiveX EXEの作り方
ActiveX EXEはアウトオブプロセスサーバとも言われ、それ自体実行可能なオートメーションサーバです。
ActiveX EXEの作り方
例
つぎの例は、Property1,Method1,Method2を持つ単純なActiveX EXEの例です。Property1は内部のメンバ変数の値を読み書きします。Method1は内部メンバ変数にパラメータを加えます。Method2は内部メンバ変数を0にします。
unit Unit2; interface uses ComObj, ActiveX, Class1_TLB; type TClass1 = class(TAutoObject, IClass1) protected function Get_Property1: Integer; safecall; procedure Set_Property1(Value: Integer); safecall; procedure Method1(Value: Integer); safecall; procedure Method2; safecall; private FData: Integer; end; implementation uses ComServ; function TClass1.Get_Property1: Integer; begin Result := FData; end; procedure TClass1.Set_Property1(Value: Integer); begin FData := Value; end; procedure TClass1.Method1(Value: Integer); begin FData := FData + Value; end; procedure TClass1.Method2; begin FData := 0; end; initialization TAutoObjectFactory.Create(ComServer, TClass1, Class_Class1, ciSingleInstance); end.
使用例
unit Test1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComObj; type TForm1 = class(TForm) Edit1: TEdit; cmdSet: TButton; cmdGet: TButton; Label1: TLabel; Button1: TButton; Button2: TButton; procedure FormCreate(Sender: TObject); procedure cmdSetClick(Sender: TObject); procedure cmdGetClick(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private 宣言 } obj: Variant; public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin obj := CreateOleObject('Class1.Class1'); end; procedure TForm1.cmdSetClick(Sender: TObject); begin obj.Property1 := StrToInt(Edit1.Text); end; procedure TForm1.cmdGetClick(Sender: TObject); begin Label1.Caption := IntToStr(obj.Property1); end; procedure TForm1.Button1Click(Sender: TObject); var n: Integer; begin n := StrToInt(Edit1.Text); obj.Method1(n); Label1.Caption := IntToStr(obj.Property1); end; procedure TForm1.Button2Click(Sender: TObject); begin obj.Method2; Label1.Caption := IntToStr(obj.Property1); end; end.