VBS中CreateObject和WScript.CreateObject的区别介绍

CreateObject和WScript.CreateObject的区别一:
CreateObject是VBS的内置函数,属于语言的一部分;而WScript.CreateObject是Windows脚本宿主(wscript.exe和cscript.exe)提供的WScript对象的方法。类似于批处理中内部命令和外部命令的关系。在VBS中,CreateObject总是可用的,而WScript.CreateObject只有在宿主为wscript.exe和cscript.exe的情况下才可以使用,在WMI、QTP、SecureCRT、EmEditor等其他宿主环境是无法使用的。

CreateObject和WScript.CreateObject的区别二:
如果只用第一个参数,那么CreateObject和WScript.CreateObject几乎是相同的;但是如果要用到第二个参数,那么两者就完全不同了。CreateObject的第二个参数用来通过DCOM在远程服务器上创建对象;而WScript.CreateObject的第二个参数用来创建本地对象并响应事件。

一个响应事件的简单例子:


代码如下:

Dim IE
Set IE = WScript.CreateObject("InternetExplorer.Application", "IE_")
IE.Visible = True
IE.Navigate "http://www.jb51.net"
Do
WScript.Sleep 1000
Loop

Sub IE_OnQuit()
MsgBox "正在关闭Demon's Blog"
WScript.Quit
End Sub

CreateObject和WScript.CreateObject的区别三:

因为CreateObject是VBS的内置函数,不需要通过COM来调用,所以CreateObject比WScript.CreateObject要稍微快一点点(虽然几乎可以忽略不计):

代码如下:

t = Timer
For i = 1 To 100000
Set WshShell = WScript.CreateObject("Wscript.Shell")
Next
WScript.Echo Timer - t

'By Demon
t = Timer
For i = 1 To 100000
Set WshShell = CreateObject("Wscript.Shell")
Next
WScript.Echo Timer - t

Demon的建议:尽量使用CreateObject函数,除非你需要响应事件。这样至少有三个好处:可移植性更好、速度更快、代码更短。

作者: Demon
链接: http://demon.tw/programming/vbs-createobject-wscript-createobject.html

(0)

相关推荐

  • VBS中CreateObject和WScript.CreateObject的区别介绍

    CreateObject和WScript.CreateObject的区别一: CreateObject是VBS的内置函数,属于语言的一部分:而WScript.CreateObject是Windows脚本宿主(wscript.exe和cscript.exe)提供的WScript对象的方法.类似于批处理中内部命令和外部命令的关系.在VBS中,CreateObject总是可用的,而WScript.CreateObject只有在宿主为wscript.exe和cscript.exe的情况下才可以使用,在W

  • oracle中存储函数与存储过程的区别介绍

    在oracle中,函数和存储过程是经常使用到的,他们的语法中有很多相似的地方,可是也有它们的不同之处,这段时间刚学完函数与存储过程,来给自己做一个总结: 一:存储过程:简单来说就是有名字的pl/sql块. 语法结构: create or replace 存储过程名(参数列表) is --定义变量 begin --pl/sql end; 案例: create or replace procedure add_(a int,b int) is c int; begin c:=a+b; dbms_ou

  • MyBatis中关于resultType和resultMap的区别介绍

    MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的(对应着我们的model对象中的实体),而resultMap则是对外部ResultMap的引用(提前定义了db和model之间的隐射key-->value关系),但是resultType跟resultMap不能同时存在. 在MyBatis进行查询映射时,其实查询出来的每一个属性都是放在一个对应的Map里面的,其中键是属性名,值则是其对应的值.

  • jQuery中的insertBefore(),insertAfter(),after(),before()区别介绍

    insertBefore():a.insertBefore(b) a在前,b在后, a:是一个选择器,b:也是一个选择器 <!DOCTYPE html> <html> <head> <meta charset='UTF-8'> <title>jqu</title> <script type="text/javascript" src='jquery-2.2.0.min.js'></script&g

  • 深入理解Python中的 __new__ 和 __init__及区别介绍

    本文的目的是讨论Python中 __new__ 和 __ini___ 的用法. __new__ 和 __init__ 的区别主要表现在:1. 它自身的区别:2. 及在Python中新式类和老式类的定义. 理解 __new__ 和 __init__ 的区别 这两个方法的主要区别在于:__new__ 负责对象的创建而 __init__ 负责对象的初始化.在对象的实例化过程中,这两个方法会有些细微的差别,表现于:如何工作,何时定义. Python中两种类的定义方式 Python 2.x 中类的定义分为

  • Java中关键字final finally finalize的区别介绍

    目录 1. final 1.1 final修饰属性 1.2 final修饰方法 1.3 final修饰类 2. finally 3. finalize 这三个除了长得像以外,好像没什么联系 1. final final意为“最后的”,它是Java中的一个关键字. final可以修饰属性.方法.类. 1.1 final修饰属性 从final的含义就不难理解用final修饰内容的用意.final修饰属性,就表示这个属性是“最终的”,也就是不可更改的,换成我们熟悉的名词,也就是“常量”. privat

  • ASP.NET Core MVC中Required与BindRequired用法与区别介绍

    在开发ASP.NET Core MVC应用程序时,需要对控制器中的模型校验数据有效性,元数据注释(Data Annotations)是一个完美的解决方案. 元数据注释最典型例子是确保API的调用者提供了某个属性的值,在传统的ASP.NET MVC中使用的是RequiredAttribute特性类.该属性仍然可以在ASP.NET Core MVC中使用,但也提供了一个新的特性类BindRequiredAttribute. 今天让我们来看看它们之间的细微差别. RequiredAttribute的典

  • 在javaScript中关于submit和button的区别介绍

    submit是button的一个特例,也是button的一种,它把提交这个动作自动集成了. 如果表单在点击提交按钮后需要用JS进行处理(包括输入验证)后再提交的话,通常都必须把submit改成button,即取消其自动提交的行为,否则,将会造成提交两次的效果,对于动态网页来说,也就是对数据库操作两次.或者在使用submit时验证时加return true或false. submit和button,二者都以按钮的形式展现,看起来都是按钮,所不同的是type属性和处发响应的事件上,submit会提交

  • Laravel模板引擎Blade中section的一些标签的区别介绍

    Laravel 框架中的 Blade 模板引擎,很好用,但是在官方文档中有关 Blade 的介绍并不详细,有些东西没有写出来,而有些则是没有说清楚.比如,使用中可能会遇到这样的问题: 1.@yield 和 @section 都可以预定义可替代的区块,这两者有什么区别呢? 2.@section 可以用 @show, @stop, @overwrite 以及 @append 来结束,这三者又有什么区别呢? 本文试对这些问题做一个比较浅显但是直观的介绍. @yield 与 @section 首先,@y

  • js中值类型和引用类型的区别介绍

    1.JavaScript中的变量类型有哪些? (1)值类型(基本类型):字符串(string).数值(number).布尔值(boolean).undefined.null  .symbol (2)引用类型:对象(Object).数组(Array).函数(Function) 2.值类型和引用类型的区别 (1)值类型: 1.占用空间固定,保存在栈中(当一个方法执行时,每个方法都会建立自己的内存栈,在这个方法内定义的变量将会逐个放入这块栈内存里,随着方法的执行结束,这个方法的内存栈也将自然销毁了.因

随机推荐