| View previous topic :: View next topic |
| Author |
Message |
Ian Boyd Guest
|
Posted: Thu Sep 21, 2006 12:05 am Post subject: TObject from IUnknown? |
|
|
Is it at all possible to get at the object that is implementing some
interface (i.e. IUnknown)?
i know Delphi must be able to walk it's internal VMT structures and return
the original TObject, but i don't see any internal function for doing it. |
|
| Back to top |
|
 |
Deborah Pate (TeamB) Guest
|
Posted: Thu Sep 21, 2006 1:18 am Post subject: Re: TObject from IUnknown? |
|
|
<<Ian Boyd:
Is it at all possible to get at the object that is implementing
some interface (i.e. IUnknown)?
Azret posted this code here a while back:
// GetImplObject(Intf, IMyInterface, TMyObject);
function GetImplObject(const Instance: IUnknown; const IID: TGUID;
ImplClass: TClass): TObject;
var
InterfaceEntry: PInterfaceEntry;
begin
Result := nil;
if (ImplClass = nil) or (Instance = nil) then Exit;
InterfaceEntry := ImplClass.GetInterfaceEntry(IID);
if InterfaceEntry <> nil then
begin
if InterfaceEntry^.IOffset > 0 then
Result := TObject(Integer(Instance) -
InterfaceEntry^.IOffset);
end;
end
--
Deborah Pate (TeamB) http://delphi-jedi.org
TeamB don't see posts sent via Google or ISPs
Use the real Borland server: newsgroups.borland.com
http://www.borland.com/newsgroups/genl_faqs.html |
|
| Back to top |
|
 |
|