Domanda

Si tratta di componente Window COM.

  • Server.exe: una a 32 bit out-of-process server COM
  • CLSID_Application: Il GUID di un oggetto COM in Server.exe
  • Client.exe:. Un'applicazione client a 64 bit che utilizzano Server.exe in un modo senza registro

Come sappiamo, un exe non può essere utilizzato come un componente COM senza registro, per simulare tale comportamento, avvio il processo di Server.exe me stesso, fornendo il percorso esatto:

  • CreateProcess ( "Server.exe")
  • IClassFactory * pFactory = CoGetClassObject (CLSID_Application)
  • pFactory-> CreateInstance (ppAppObject);

Funziona se ho la Server.tlb registrato, ma dopo annullare la registrazione Server.tlb, solo che non è riuscito a creare il ppAppObject, anche se l'ho incorporare manifesta in entrambi Server.exe e Client.exe:

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<file name="Server.tlb">
  <typelib tlbid="{DAC4A4C9-F84C-4F05-A7DC-E152869499F5}" version="1.0" helpdir=""></typelib>
</file>
<comInterfaceExternalProxyStub name="IApplication" iid="{D74208EA-71C2-471D-8681-9760B8ECE599}" tlbid="{DAC4A4C9-F84C-4F05-A7DC-E152869499F5}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
</assembly>

Avete qualche idea su questo?

Modifica: Si scopre che funziona davvero se a specificare tlbid per le interfacce, e incorporare il manifesto sia exe

È stato utile?

Soluzione

è l'elemento <comInterfaceExternalProxyStub> sufficiente? Non è necessario gli elementi <comClass> e <typelib> così?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top