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对象
|
请发表评论