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.