Come utilizzare un server COM out-of-process, senza il suo file TLB
-
24-09-2019 - |
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
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