unit InterfaceUtilsUnit; interface type // 自前開放管理interface基底クラス(TInterfacedObjectの代替) // 参考:DelWiki - 資料/インターフェイス // http://delwiki.info/?%BB%F1%CE%C1%2F%A5%A4%A5%F3%A5%BF%A1%BC%A5%D5%A5%A7%A5%A4%A5%B9 TInterfacedBase = class(TObject, IUnknown) function QueryInterface(const IID: TGUID; out Obj): HRESULT; stdcall; function _AddRef: Integer; stdcall; function _Release: Integer; stdcall; end; implementation function TInterfacedBase._AddRef: Integer; begin Result := -1; end; function TInterfacedBase._Release: Integer; begin Result := -1; end; function TInterfacedBase.QueryInterface(const IID: TGUID; out Obj): HRESULT; const E_NOINTERFACE = HResult($80004002); begin if GetInterface(IID, Obj) then Result := 0 else Result := E_NOINTERFACE; end; end.