2010-03-03 9 views
8

के बिना आउट-ऑफ-प्रोसेस COM सर्वर का उपयोग कैसे करें यह विंडो COM घटक के बारे में है।अपनी टीएलबी फ़ाइल

  • server.exe: एक 32 बिट बाहर के प्रक्रिया COM सर्वर
  • CLSID_Application: जो server.exe का प्रयोग कर एक 64 बिट क्लाइंट अनुप्रयोग: server.exe में एक COM वस्तु
  • Client.exe की GUID एक रजिस्ट्री मुक्त तरीके से।

    • :

    हम जानते हैं, एक exe इस तरह के व्यवहार की नकल करने, एक रजिस्ट्री मुक्त COM घटक के रूप में इस्तेमाल नहीं किया जा सकता, मैं server.exe प्रक्रिया अपने आप को सही मार्ग उपलब्ध कराने के द्वारा शुरू CreateProcess ("server.exe")

  • IClassFactory * pFactory = CoGetClassObject (CLSID_Application)
  • pFactory-> CreateInstance (ppAppObject);

यह काम करता है अगर मैं Server.tlb registred है, लेकिन अपंजीकृत Server.tlb के बाद, यह सिर्फ ppAppObject बनाने में विफल है, भले ही मैं दोनों server.exe और 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> 

क्या आपको इस पर कोई विचार है?

संपादित करें: यह कि यह वास्तव में अगर मैं इंटरफेस के लिए tlbid निर्दिष्ट करें, और दोनों exe

उत्तर

3

को प्रकट एम्बेड <comInterfaceExternalProxyStub> तत्व पर्याप्त है काम करता है पता चला है? क्या आपको <comClass> और <typelib> तत्वों की भी आवश्यकता नहीं है?

+0

मैंने को आजमाया है, जो काम नहीं करता है। और केवल टैग में उपयोग किया जा सकता है, लेकिन मेरे मामले में, निष्पादन योग्य एक exe है, यह रजिस्ट्री मुक्त COM द्वारा समर्थित नहीं है –

संबंधित मुद्दे