VB里用CreateObject函数跟引用的区别是?

dll ocx都是运行时绑定吧 我要是用createobject 函数 建立对象 就是编译时绑定 在Vb里把 引用 里的勾号去掉。

1.C#中类似 CreateObject 的方法就是 System.Activator.CreateInstance. 后续的对象函数的调用可以通过InvokeMember方法来实现。

如在VB中的源代码如下:
这种方式叫Late-Bind,关于早期绑定和后期绑定的区别
Dim o As Object = CreateObject("SomeClass")
o.SomeMethod(arg1, arg2)
w = o.SomeFunction(arg1, arg2)
w = o.SomeGet
o.SomeSet = w
End Sub

转换成C#的代码如下所示:

public void TestLateBind()
{
System.Type oType = System.Type.GetTypeFromProgID("SomeClass");
object o = System.Activator.CreateInstance(oType);
oType.InvokeMember("SomeMethod", System.Reflection.BindingFlags.InvokeMethod, null, o, new object[] {arg1, arg2});
w = oType.InvokeMember("SomeFunction", System.Reflection.BindingFlags.InvokeMethod, null, o, new object[] {arg1, arg2});
w = oType.InvokeMember("SomeGet", System.Reflection.BindingFlags.GetProperty, null, o, null);
oType.InvokeMember("SomeSet", System.Reflection.BindingFlags.SetProperty, null, o, new object[] {w});
}

里面有方法,属性的调用设定.

实际例子如下,调用Office功能的:
public void TestLateBind()
{
System.Type wordType = System.Type.GetTypeFromProgID( "Word.Application" );
Object word = System.Activator.CreateInstance( wordType );
wordType.InvokeMember( "Visible", BindingFlags.SetProperty, null, word, new Object[] { true } );
Object documents = wordType.InvokeMember( "Documents", BindingFlags.GetProperty, null, word, null );
Object document = documents.GetType().InvokeMember( "Add", BindingFlags.InvokeMethod, null, documents, null );
}

这种Activator.CreateInstance方法还可以用来创建实例,并调用某些接口方法。毕竟接口必须要实例才能调用。
2.CreateObject和菜单里引用效果是类似的,区别是:CreateObject是创建并返回一个对 ActiveX 对象的引用,相当于实例化该对象;而引用一个对象之后,尚未实例化,需要你自己定义变量实例化此对象。
引用ActiveX 对象还有一个好处:编写代码时会自动出现对象的属性或方法名称,便于输入。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-12-16
CreateObject和菜单里引用效果是类似的,区别是:CreateObject是创建并返回一个对 ActiveX 对象的引用,相当于实例化该对象;而引用一个对象之后,尚未实例化,需要你自己定义变量实例化此对象。
引用ActiveX 对象还有一个好处:编写代码时会自动出现对象的属性或方法名称,便于输入。本回答被提问者采纳
第2个回答  2013-01-28
CreateObject和引用效果差不多,引用写代码没有提示,如果是引用的话有提示
第3个回答  2013-01-28
这是我见到最抠门的提问了,楼主12级,有四万多金币。

VB里用CreateObject函数跟引用的区别是?
2.CreateObject和菜单里引用效果是类似的,区别是:CreateObject是创建并返回一个对 ActiveX 对象的引用,相当于实例化该对象;而引用一个对象之后,尚未实例化,需要你自己定义变量实例化此对象。引用ActiveX 对象还有一个好处:编写代码时会自动出现对象的属性或方法名称,便于输入。

VB里这两个有什么区别,为什么我用第2个的时候出错,没有对象呢?
2个是一样的 没区别 2个同时用就重复了嘛 当然会出错

VB中如何使用CreateObject函数
两个都不行,必须先添加该DLL引用,然后才能用第二种方法。因为CreateObject的使用格式是CreateObject(类名.[服务名])

关于VB中CreateObject 函数
1、CreateObject函数简介:创建并返回一个对 ActiveX 对象的引用。2、CreateObject函数语法 :CreateObject(class,[servername]) ;3、CreateObject参数简介 :class必需的;Variant (String). 要创建的应用程序名称和类;servername可选的;Variant (String). 要在其上创建对象的网络服务器名称。4、CreateObjec...

VB createobject怎么用,请举例说明!
CreateObject:作用和他的英语意思一样,创建对象 dim obj1 as object'定义一个对象变量 set obj1=CreateObject("Scripting.FileSystemObject")'创建一个FileSystemObject对象,也就是FSO,用它可以操作 磁盘、文件等各种任务 '用CreateObject,关键要知道双引号里面的“类名”,在下面的连接中有很多种“类”...

VB、VBS中CreatObject用法
CreateObject函数 返回 创建并返回一个对 ActiveX 对象的引用。语法CreateObject(class,[servername]) CreateObject 函数的语法有如下部分:部分 描述 class 必需的; Variant (String). 要创建的应用程序名称和类。servername 可选的; Variant (String). 要在其上创建对象的网络服务器名称。class 参数使用...

vb引用丢失
方案二、使用CREATEOBJECT创建。使用方案一,对原有的工程变动小。我看了一下引用里的列表,Microsoft DTS Runtime 1.0下面是Microsoft Fax Service Extended COM Type Library,中间没有Microsoft E开头的库,我也从上到下都翻过3遍,没有看到有"Microsoft Excel"字样的引用。下面是我找的路径,win7 ...

VB做的DLl的引用问题?
app.Path 的路径名里是否有空格。VB调用有空格路径是调用不到的。2.VB做的组件属于Com 组件,调用方法有两种,一,在引用里添加,二,手动用Regsvr32 比如你的A.DLL 里有个类模块是bb,在bb里有cc函数 调用程序是这样的写的。Set aa as object Set aa = CreateObject("A.bb")aa.cc()...

VB中的NEW命令和Create命名有什么异同?
createobject与new 的关键区别就是声明后系统对资源的控制权不一样。createobject是由内存中重新创建一个实例而不是简单的资源计数器+1的概念。如果内存中存在一个这样的实例,编译器不会理会这个实例而是将对象重新创建一个。实际上是一个完全独立的新的资源实例。并且不受GC的资源回收控制,必须自己回收。

vb中调用getobject需要添加什么引?
在VB中,调用GetObject或CreateObject方法实现隐式引用。需要明确类名,例如引用IE浏览器,代码如下:Dim x As Object Set x = GetObject("", "INTERNETEXPLORER.APPLICATION")x.Navigate "hi.baidu.com\/xplayer"x.Visible = True 这段代码通过GetObject方法实例化了IE浏览器对象,并执行了导航和显示操作...

相似回答