8
這是關於Window COM組件的。如何使用不帶tlb文件的進程外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
我已經試過,這是行不通的。和可以在一個標籤使用,但只能在我的情況下,可執行文件是exe文件,它不會被註冊免費COM支持 –
2010-03-03 08:32:10