vb中如何实现对象实例化?

时间:2021-11-05 12:05:50
在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如何实现?

9 个解决方案

#1


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

也可写成一句:
dim 变量名 as new 对象名

#2


dim uDateTest As DataObject.TestClass

uDateTest=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.TestClass

uDateTest=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的工作是由运行时完成的

#1


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

也可写成一句:
dim 变量名 as new 对象名

#2


dim uDateTest As DataObject.TestClass

uDateTest=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.TestClass

uDateTest=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的工作是由运行时完成的