Icebird

Delphi/C# - My favorite programming language

导航

[Delphi] 实现自动化对象的一种简易方法

Delphi 中不需要建立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对象

posted on 2006-07-18 09:25  Icebird  阅读(1522)  评论(2编辑  收藏  举报