在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如何实现?
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如何实现?
dim 变量名 as 对象名
set 变量名 = new 对象名也可写成一句:
dim 变量名 as new 对象名
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如何生成或实现?
在active exe 中给一个类,用类调用它就ok了
如何实现?
set uDateTest= new DataObject.TestClass
uDateTest=CreateObject("DataObject.TestClass", gServerName)一般情况下new会被翻译成CreateObject,而CreateObject实际上是调用CoCreateInstanceEx来实力化对象只要是com就有prgid,不用管它是exe还是dll。你不要管classid,vb只认识prgid,转换工作都由编译器和运行时包揽了
中的TestClass如何生成或实现?
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的工作是由运行时完成的