在IDE中设置ProgID

时间:2010-12-04 01:42:21

标签: delphi com c++builder

我正在使用C ++ Builder XE创建一个COM服务器。它的ProgID始终是'PROGRAMNAME.CLASSNAME'。

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

Delphi的回答可能就足够了。

1 个答案:

答案 0 :(得分: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()使用派生工厂。

干杯,

布诺