代码之家  ›  专栏  ›  技术社区  ›  jbx

从C调用旧的OLE组件#

  •  3
  • jbx  · 技术社区  · 14 年前

    我有一个非常旧的(VC++5.0)专有DLL,我需要从C#(VisualStudio2010)使用它。该示例指定要访问此组件,我需要调用 CreateDispatch("application") 表示朝向OLE。

    下面是示例代码(C++):

    IComponentServer Server;
    Server.CreateDispatch("Component.Server");
    

    我通过visualstudio向我拥有的TLB文件添加了一个引用,我可以成功地导入它的名称空间,但是 IComponentServer 没有调用任何方法 CreateDispatch .

    2 回复  |  直到 10 年前
        1
  •  3
  •   JaredPar    14 年前

    如果您有CLSID或ProgID,那么可以使用以下方法集。

    var type = Type.GetTypeFromProgID(progIdString);
    var obj = Activator.CreateInstance(type);
    var server = (IComponentServer)obj;
    
        2
  •  1
  •   Tim Robinson    14 年前

    MFC的 CreateDispatch 基于CLSID或ProgId字符串创建COM对象。您可以直接从C代码实例化COM对象。

    Interop.Component.dll

    IComponentServer server = new Interop.Component.ServerClass();