How to get the GIT in Delphi 7?

后端 未结 3 470
忘掉有多难
忘掉有多难 2021-01-19 17:15

I\'m trying to get the Global Interface Table by using the following code (Delphi):

uses Comobj, ActiveX;

var
   cGIT : IGlobalInterfaceTable = NIL;
const
          


        
3条回答
  •  猫巷女王i
    2021-01-19 17:49

    Here's my unit that does it. I put this together when I was compiling in D2006, but I don't see why it would be any different in D7. I use it for storing an interface to a DCOM server and sharing it between multiple threads.

    unit GlobalInterfaceTable;
    
    interface
    
    uses Types,
         ActiveX;
    
    type
      IGlobalInterfaceTable = interface(IUnknown)  
         ['{00000146-0000-0000-C000-000000000046}']  
         function RegisterInterfaceInGlobal (pUnk : IUnknown; const riid: TIID; out dwCookie : DWORD): HResult; stdcall;  
         function RevokeInterfaceFromGlobal (dwCookie: DWORD): HResult; stdcall;  
         function GetInterfaceFromGlobal (dwCookie: DWORD; const riid: TIID; out ppv): HResult; stdcall;  
       end;
    
      function GIT: IGlobalInterfaceTable;
    
    implementation
    
    uses ComObj;
    
    const
      CLSID_StdGlobalInterfaceTable : TGUID = '{00000323-0000-0000-C000-000000000046}';
    
    function GIT: IGlobalInterfaceTable;  
    begin  
      // This function call always returns the singleton instance of the GIT  
      OleCheck(CoCreateInstance (CLSID_StdGlobalInterfaceTable, NIL, CLSCTX_ALL, IGlobalInterfaceTable, Result));  
    end;
    
    end.
    

提交回复
热议问题