VBS基础篇 - wscript 对象详解
一、wscript对象
描述:提供对Windows脚本宿主对象模型根对象的访问。
详述:WScript对象是Windows脚本宿主对象模型层次结构的根对象。它可在任何脚本文件中使用,不需要特定的声明。
WScript对象提供对以下信息的访问命令行参数,脚本文件的名称,宿主文件名,宿主版本信息。
WScript对象可用来创建对象,连接对象,与对象断开连接,同步事件,以编程方式停止脚本的执行,将信息输出到默认输出设备(Windows对话框或命令控制台)。
WScript对象也可用来设置脚本运行的模式(交互模式或批处理模式)。
就像刚才我们说的一样,对象通过两种其自有的特性想我们提供工具,这两种特性分别是“属性”和“方法”。
二、属性
1、Arguments属性
描述:用于返回Arguments对象(这个对象我们以后会学,现在只需要了解就行)。
语法:object.Arguments
参数:object,WScript对象
例子:显示本vbs文件运行的参数
SetArg=WScript.Arguments Fori=0ToArg.Count-1 MsgBoxArg(i) Next
将上面这些代码保存为vbs文件,然后将一个或者数个任意的文件拖放到这个vbs文件上面上,那么他会逐个显示你拖放的文件。(这仅仅给出了一个实例,用到了Arguments对象,其的具体用法我们以后再了解)
2、FullName属性
描述:返回主机可执行文件(CScript.exe或WScript.exe)的完全限定路径。
语法:object.FullName
参数:object,WScript对象
例子:显示本机wscript的路径
MsgBoxwscript.fullname
在默认的情况下会显示"C:\WINDOWS\system32\wscript.exe"
3、Interactive属性
描述:设置或确定脚本模式。
语法:object.Interactive
参数:object,WScript对象
说明:Interactive属性返回一个布尔值。
有批处理和交互两种模式。在交互模式(默认模式)下,该脚本为用户提供交互功能。启用对Windows脚本宿主的输入和输出。该脚本可以将信息显示在对话框中并等待用户提供反馈。在批处理模式下,不支持这种类型的用户交互,所有对WSH的输入和输出被禁用。还可以使用Windows脚本宿主命令行开关//I(对于交互式)和//B(对于批处理模式)来设置脚本模式。
例子:显示本机的脚本模式
MsgBoxWScript.Interactive
4、Name属性
描述:返回WScript对象(主机可执行文件)的名称。
语法:object.Name
参数:object,WScript对象
例子:
MsgBoxWScript.name
5、Path属性
描述:返回包含主机可执行文件(CScript.exe或WScript.exe)的路径名称
语法:object.Path
参数:object,WScript对象
例子:
MsgBoxWScript.Path
如果你的wscript.exe是在”C:\WINDOWS\system32\wscript.exe“那么本属性会显示”C:\WINDOWS\system32“
6、ScriptFullName属性
描述:返回当前运行脚本的完整路径。
语法:object.ScriptFullName
参数:object,WScript对象
例子:显示本vbs的完整路径
MsgBoxWScript.ScriptFullName
神奇吧,这个vbs竟然知道他自己的名字。
7、ScriptName属性
描述:返回当前运行脚本的文件名。
语法:object.ScriptName
参数:object,WScript对象
说明:刚才我们知道了用ScriptFullName可以获取vbs文件自身的完整路径,加入你只想要这个文件的名字改怎么办?看例子。
例子:显示本VBS文件的名字
MsgBoxWScript.ScriptName
怎么样?看到了吗?
8、Version属性
描述:返回Windows脚本宿主的版本。
语法:object.Version
参数:object,WScript对象
例子:显示本机脚本宿主版本
MsgBoxWScript.version
三、方法
1、CreateObject方法
描述:创建一个对象
语法:CreateObject(appname.objecttype,[servername])
解释:appname必需的,Variant(字符串)。提供该对象的应用程序名。
objecttype必需的;Variant(字符串)。待创建对象的类型或类。
servername可选的;Variant(String).要在其上创建对象的网络服务器名称。
说明:要创建ActiveX对象,只需将CreateObject返回的对象赋给一个对象变量:
SetExcelSheet=CreateObject("Excel.Sheet")'的引用。
每个支持自动化的应用程序都至少提供一种对象类型。
例如,一个字处理应用程序可能会提供Application对象,Document对象,以及Toolbar对象。要创建ActiveX对象,只需将CreateObject返回的对象赋给一个对象变量:
DimExcelSheetAsObject'声明一个对象变量来存放该对象 SetExcelSheet=CreateObject("Excel.Sheet") ExcelSheet.Application.Visible=True'设置Application对象使Excel可见 ExcelSheet.Cells(1,1).Value="ThisiscolumnA,row1"'在表格的第一个单元中写些文本 ExcelSheet.SaveAs"C:\TEST.xls"'将该表格保存到C:\test.xls目录 ExcelSheet.Application.Quit'使用应用程序对象的Quit方法关闭Excel。 SetExcelSheet=Nothing'释放该对象变量
上述代码将启动该应用程序创建该对象,在本例中就是创建一个MicrosoftExcel电子数据表。对象创建后,就可以在代码中使用自定义的对象变量来引用该对象。在下面的示例中,可以使用对象变量ExcelSheet来访问新建对象的属性和方法,以及访问MicrosoftExcel的其它对象,包括应用程序对象和单元格集合。
2、GetObject方法
描述:从文件中检索一个Automation对象,或检索strProgID参数所指定的对象
语法:object.GetObject(strPathname[,strProgID],[strPrefix])
参数:object必选项。WScript对象。
strPathname必选项。包含要获取的对象的完整路径和名称。
strProgID可选项。表示对象的程序标识符(ProgID)的字符串。
strPrefix可选项。如果指定了参数strPrefix,Windows脚本宿主将在创建对象之后把对象的输出接口与脚本文件连接起来。在对象中触发事件时,Windows脚本宿主将调用一个子例程,其名称包括strPrefix和事件的名称。
例如,如果strPrefix为"MYOBJ_",对象产生的事件为"OnBegin,",那么Windows脚本宿主将调用脚本中的"MYOBJ_OnBegin"子例程。
说明:如果当前存在对象的实例或者希望使用已经被装载的文件创建对象,可使用GetObject方法。如果当前不存在实例,而且不希望从已经装载的文件中启动对象,请使用CreateObject方法。
如果一个对象将自己注册为单实例对象(例如,MicrosoftWord7.0中的Word.Basic对象),那么无论执行CreateObject多少次也只能创建对象的一个实例。此外,对于单实例的对象,如果用零长度的字符串语法("")调用,GetObject总是返回同样的实例,而且如果省略路径参数将导致错误。使用GetObject不能获得对VisualBasic4.0以及以前版本创建的MicrosoftVisualBasic(R)类的引用。
GetObject适用于所有的COM类,不受创建对象所用语言的限制。
示例:在执行下列代码时,与指定的strPathname相关联的应用程序被启动,指定文件中的对象被激活。如果strPathname是一个零长度的字符串(""),GetObject将返回指定类型的新对象实例。如果strPathname参数完全被省略,GetObject将返回指定类型的当前活动对象。如果不存在指定类型的对象,将发生错误。
DimMyObjectAsObject SetMyObject=GetObject("C:\CAD\SCHEMA.CAD") MyApp=MyObject.Application
某些应用程序允许激活一个文件的某些部分。如果要这样做,需要在文件名后添加一个惊叹号(!),然后跟一个字符串,标识出文件中希望被激活的部分。关于如何创建该字符串的信息,请参阅创建对象的应用程序的有关文档。
例如,在一个绘图应用程序中,文件中存储的一幅图可能包含多层。可以使用下面的代码激活绘图文件中称为schema.cad的一层:
SetLayerObject=GetObject("C:\CAD\SCHEMA.CAD!Layer3")
如果不指定对象的类,COM将根据所提供的文件名来确定要启动的应用程序和要激活的对象。但是,某些文件可能支持多个对象类。例如,一幅图纸可能支持三种不同类型的对象:一个应用程序对象,一个绘图对象,以及一个工具栏对象,它们都是同一个文件的组成部分。
在下例中,FIGMENT是一个绘图应用程序的名称,DRAWING是它支持的对象类型之一。
DimMyObjectAsObject
SetMyObject=GetObject("C:\DRAWINGS\SAMPLE.DRW","FIGMENT.DRAWING")
3、Quit方法
描述:退出执行,返回指定的错误代码。
语法:object.Quit[intErrorCode]
解释:object必选项。WScript对象。
intErrorCode可选项。如果包含此参数,WScript将把它作为进程终止码返回。如果省略了intErrorCode,WScript将返回零(0)作为进程终止码。
例子:
下例退出执行并返回错误代码1:
WScript.Quit
4、Sleep方法
描述:使脚本进程在指定的毫秒数内处于非活动状态,然后继续执行。
语法:object.Sleep(intTime)
参数:object必选项。WScript对象。
intTime脚本进程在非活动状态的时间长度,以毫秒为单位。
说明:在睡眠状态下,脚本将继续执行所处理的事件。如果脚本引擎超时或被中断,睡眠将立即结束。
例子:
wscript.sleep(3000) Setapprun=CreateObject("wscript.shell") apprun.run"%windir%\notepad.exe"
此例子将会延迟3秒启动记事本。
5、timeout方法
描述:设置脚本的生存时间
语法:wscript.timeout
例子:
wscript.timeout=10 MsgBox"hello"
6、Echo方法
描述:将输出发送到对话框或控制台。
语法:object.Echo[Arg1][,Arg2][,Arg3]...
参数:object必选项。WScript对象。
Arg1,Arg2,Arg3...所显示的项的列表。
说明:如果宿主为WScript.exe,本方法将把输出显示在对话框中;如果宿主为CScript.exe,结果将显示在控制台上。每一项将被一个空格隔开。在CScript.exe下,输出的末尾被加上换行符。如果未提供任何项,显示的将是空行。
例子:
Setfso=CreateObject("scripting.filesystemobject") Setf=fso.OpenTextFile("c:\test.txt") wscript.echof.ReadAll
将会显示这个文件里面的所有内容。这么看来,他的功能跟msgbox一样,不过不如他强大。
7、ConnectObject方法
描述:将一个对象事件源连接到具有给定前缀的函数。
语法:object.ConnectObjectstrObject,strPrefix
参数:object必选项。WScript对象。
strObject要连接的对象的名称。
strPrefix事件函数的前缀。
说明:
对象必须能够枚举自己类的事件集合。
例子:下例实例化了一个假想的对象,并将其连接到脚本文件。然后脚本调用该对象的"SomeMethod"方法。如果对象中发生了名为"Event"的事件,将调用MyEvent_Event子例程。
SetMyObject=WScript.CreateObject("SomeObject") MyObject.SomeMethod WScript.ConnectObjectMyObject,"MyEvent" SubMyEvent_Event(strName) WScript.EchostrName EndSub WScript.DisconnectObjectMyObject
8、DisconnectObject方法
描述:将原先与Windows脚本宿主连接的对象断开。
语法:object.DisconnectObjectobj
参数:object必选项。WScript对象。
obj要断开连接的对象的名称。
说明:
如果所指定的对象尚未被连接到Windows脚本宿主,则此方法不起任何作用。
例子:
下例创建了一个假想的对象并将其连接到脚本文件。然后脚本调用对象的"SomeMethod"方法。如果对象中发生名为"Event"的错误,MyEvent_Event子例程将被调用。
SetMyObject=WScript.CreateObject("SomeObject","MyEvent") MyObject.SomeMethod SubMyEvent_Event(strName) WScript.EchostrName EndSub WScript.DisconnectObjectMyObject
这篇文章就介绍到这了,需要的朋友可以参考一下。