在C++中代码如下:
CLSID clsid; 
CString nProgID=MyGetProgID(); //获得接口组件的ProgID
CLSIDFromProgID(A2COLE(nProgID), &clsid); //转化成ClassID
HRESULT hr = CoCreateInstanceEx(clsid,
NULL,
CLSCTX_REMOTE_SERVER |CLSCTX_LOCAL_SERVER,
&cs,
1,
&mqi);用VB如何实现?

解决方案 »

  1.   

    看不懂C++,VB中实例是先定义如:
    dim 变量名 as 对象名
    set 变量名 = new 对象名也可写成一句:
    dim 变量名 as new 对象名
      

  2.   

    dim uDateTest As DataObject.TestClassuDateTest=CreateObject("DataObject.TestClass", gServerName)用这种方法也进行对象的实例化,其中gServerName可以设置实例化的机器名,可以是本机或是服务器等
      

  3.   

    这个对象是在一个Active EXE中,首先要调用到这个EXE,才能进行创建。
      

  4.   

    在active exe 中给一个类,用类调用它就ok了
      

  5.   

    回复人: lilaclone(阿九--云破月来花弄影) ( ) 信誉:112  2004-05-12 12:31:00  得分:0 
     
     
      dim uDateTest As DataObject.TestClassuDateTest=CreateObject("DataObject.TestClass", gServerName)用这种方法也进行对象的实例化,其中gServerName可以设置实例化的机器名,可以是本机或是服务器等
     
     CLSIDFromProgID(A2COLE(nProgID), &clsid); //转化成ClassID
    这句是把程序名转化成程序的ClassID,VB中如何实现?
    要求是创建的实例是一个EXE而不是一个DLL,因此要先通过proid得到classid。dim uDateTest As DataObject.TestClass
    中的TestClass如何生成或实现?
      

  6.   

    回复人: wsmfighter2002(Worker) ( ) 信誉:100  2004-05-12 12:38:00  得分:0 
     
     
      在active exe 中给一个类,用类调用它就ok了
     
     
    如何实现?
      

  7.   

    dim uDateTest As DataObject.TestClass下面这两句是等价的
    set uDateTest= new DataObject.TestClass
    uDateTest=CreateObject("DataObject.TestClass", gServerName)一般情况下new会被翻译成CreateObject,而CreateObject实际上是调用CoCreateInstanceEx来实力化对象只要是com就有prgid,不用管它是exe还是dll。你不要管classid,vb只认识prgid,转换工作都由编译器和运行时包揽了
      

  8.   

    dim uDateTest As DataObject.TestClass
    中的TestClass如何生成或实现?
      

  9.   

    vb中通过工程\引用,然后就可以:
    dim uDateTest As DataObject.TestClass
    set uDateTest= new DataObject.TestClass或者set uDateTest=CreateObject("DataObject.TestClass")
    这样clsid和iid会再编译时被确定,使用的是vTable梆定你可以不引用而:
    dim uDateTest As object
    set uDateTest=CreateObject("DataObject.TestClass")
    这里就能使用new了,这样使用的是后期梆定,将prgid翻译成clsid的工作是由运行时完成的