Delphi 中不需要建立ActiveX Library不需要编辑TLB也能创建一个自动化对象 秘密就在于$METHODINFO这个没有文档描述的编译指令 首先我们定义一个TScriptableObject继承自TObjectDispatch (ObjComAutopas) {$METHODINFO ON} TScriptableObject = class(TObjectDispatch) public constructor Create; end; {$METHODINFO OFF}
{ TScriptableObject } constructor TScriptableObjectCreate; begin inherited Create(Self False); end; 因此 TScriptableObject 便是一个具备了特殊能力的一个类这个类是具有IDispatch接口的类 并且继承自TScriptableObject 的任何子类的Public & Published方法都能够从GetIDsOfNames检索出来并且可以Invoke 这样创建出的TScriptableObject的子类就是我们所需要的自动化对象这个对象我们可以用来作为WebBrowser的IDocHostUIHandler接口的GetExternal所需的IDispatch对象 |