Welcome

首页 / 软件开发 / Delphi / Delphi实现自动化对象的一种简易方法

Delphi实现自动化对象的一种简易方法2011-04-23IcebirdDelphi 中不需要建立ActiveX Library,不需要编辑TLB也能创建一个自动化对象。

秘密就在于$METHODINFO这个没有文档描述的编译指令。

首先我们定义一个TScriptableObject,继承自TObjectDispatch (ObjComAuto.pas)

{$METHODINFO ON}
TScriptableObject = class(TObjectDispatch)
public
constructor Create;
end;
{$METHODINFO OFF}
....
{ TScriptableObject }
constructor TScriptableObject.Create;
begin
inherited Create(Self, False);
end;

因此, TScriptableObject 便是一个具备了特殊能力的一个类,这个类是具有IDispatch 接口的类, 并且继承自TScriptableObject 的任何子类的Public & Published方法都能 够从GetIDsOfNames检索出来并且可以Invoke。

这样创建出的TScriptableObject的子类,就是我们所需要的自动化对象,这个对象我们 可以用来作为WebBrowser的IDocHostUIHandler接口的GetExternal所需的IDispatch对象