2010-12-04 23 views
1

我正在使用C++ Builder XE創建COM服務器。它的ProgID總是'PROGRAMNAME.CLASSNAME'。在IDE中設置ProgID

如何更改ProgID?我想使用'COMPANYNAME.PROGRAMNAME.FUNCTIONALITY'。

Delphi答案可能就足夠了。

回答

2

覆蓋工廠的GetProgID方法。應遵循以下幾點:

template <typename T> 
class TMyCppComObjectFactory : public TCppComObjectFactory<T> 
{ 
protected: 
    System::UnicodeString __fastcall GetProgID() 
    { 
    return "Company.ProgName.Functionality"; 
    } 
public: 
    __fastcall TMyCppComObjectFactory(Comobj::TComServerObject* ComServer, 
      Comobj::TComClass ComClass, 
      const GUID &ClassID, 
      const System::String ClassName, 
      const System::String Description, 
      Comobj::TClassInstancing Instancing, 
      Comobj::TThreadingModel ThreadingModel) : 
     TCppComObjectFactory<T>(ComServer, ComClass, ClassID, 
           ClassName, Description, 
           Instancing, ThreadingModel) 
    { 
    } 
}; 

然後讓COM服務器的createFactory()使用派生工廠。

乾杯,

布諾

+0

感謝,將考驗在接下來的一段時間,標記的答案正確的,如果它的工作原理。 – 2011-01-06 22:21:45