2010-03-03 22 views
8

Bu, Windows COM bileşeniyle ilgilidir.Tlb dosyası olmadan işlem dışı bir COM sunucusu nasıl kullanılır

  • Server.exe: bir 32-bit-dışı işlem COM sunucusu
  • CLSID_Application: Server.exe kullanımı bir 64 bit istemci uygulaması: Server.exe COM nesnesine
  • Client.exe GUID kayıtsız bir şekilde.

    • :

    Bildiğimiz gibi, bir exe böyle davranışını taklit etmek, bir kayıt defteri içermeyen COM bileşeni olarak kullanılamaz, ben tam yolunu sağlayarak Server.exe işlemini kendim başlatmak CreateProcess ("Server.exe")

  • ıclassfactory * pFactory = CoGetClassObject işlemi (CLSID_Application)
  • pFactory-> CreateInstance (ppAppObject);

ben hem Server.exe ve Client.exe Bildiri gömmek bile, ben Server.tlb Registred varsa o çalışır, ancak kaydını Server.tlb sonra, sadece ppAppObject oluşturulamadı:

<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> 

Bu konuda herhangi bir fikrin var mı?

Düzenleme: Ben arayüzleri için tlbid belirtin ve her iki exe

cevap

3

için apaçık gömmek <comInterfaceExternalProxyStub> eleman yeterli mi eğer gerçekten çalışıyor çıkıyor? <comClass> ve <typelib> öğelerine de ihtiyacınız yok mu?

+0

Çalışmıyor olan 'u denedim. ve yalnızca etiketinde kullanılabilir, ancak benim durumumda, yürütülebilir bir exe'dir, kayıtsız COM tarafından desteklenmez –

İlgili konular