So verwenden Sie einen Out-of-Process-COM-Server ohne seine TLB-Datei

8

Es geht um die Window COM-Komponente.

  • Server.exe: ein 32-Bit-Out-of-Process-COM-Server
  • CLSID_Application: Die GUID eines COM-Objekts in Server.exe
  • Client.exe: eine 64-Bit-Client-Anwendung, die Server.exe auf eine Art und Weise ohne Registrierung verwendet.

Wie wir wissen, kann eine Exe nicht als registrierungsfreie COM-Komponente verwendet werden, um ein solches Verhalten nachzuahmen, starte ich den Server.exe-Prozess selbst, indem ich den genauen Pfad gebe:

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

Es funktioniert, wenn ich die Server.tlb registriert habe, aber nach der Registrierung von Server.tlb, konnte es nur nicht die ppAppObject erstellen, obwohl ich Manifest in Server.exe und Client.exe einbetten:

%Vor%

Haben Sie eine Idee dazu?

Bearbeiten: Es stellt sich heraus, dass es wirklich funktioniert, wenn ich Tlbid für Interfaces angeben und das Manifest in beide exe einbetten

    
Baiyan Huang 03.03.2010, 06:25
quelle

1 Antwort

3

Ist das <comInterfaceExternalProxyStub> -Element ausreichend? Brauchen Sie nicht auch die Elemente <comClass> und <typelib> ?

    
Ants 03.03.2010, 07:00
quelle

Tags und Links