VBS脚本编程(8)——WSH脚本宿主

WSH的介绍

什么是WHS?
Windows 脚本宿主 (WSH) 是一种 Windows 管理工具。
WSH 为宿主脚本创建环境。也就是说,当脚本到达您的计算机时,WSH 充当主机的一部分,它使对象和服务可用于脚本,并提供一系列脚本执行指南。此外,Windows 脚本宿主还管理安全性并调用相应的脚本引擎。
对于与 WSH 兼容的脚本引擎来说,WSH 是与语言无关的。它为 Windows 平台提供了简单、功能强大而又灵活的脚本编写功能,允许您从 Windows 桌面和命令提示符运行脚本。
Windows 脚本宿主非常适合于非交互式脚本编写的需要,如脚本登录、脚本管理和计算机自动化。
 
WSH对象和服务
Windows 脚本宿主为直接操纵脚本执行提供了若干个对象,并为其他操作提供了 helper 函数。使用这些对象和服务,可以完成如下任务:
  • 将消息打印到屏幕上
  • 运行基本函数,如 CreateObject 和 GetObject
  • 映射网络驱动器
  • 与打印机连接
  • 检索并修改环境变量
  • 修改注册表项
 
 

脚本文件的类型

独立的脚本文件有一些不同的格式,每种格式都有自己的扩展名。
扩 展 名
脚 本 类 型
描 述
.bat
MS-DOS 批处理文件
MS-DOS 操作系统的批处理文件
.js
JScript 文件
Windows 脚本
.vbs
VBScript 文件
Windows 脚本
.wsf
Windows 脚本宿主文件
一个 Windows 脚本的容器或项目
文件。WSH 2.0 或更高版本支持
.wsh
Windows 脚本宿主文件
一个脚本文件的属性文件。WSH
1.0 或更高版本支持
这就是 Windows 脚本宿主文件(WSF 文件)的有用之处。WSF 文件可以包含其他的脚本文件作为其脚本的一部分。这意味着多个 WSF 文件可以引用创建并保存在同一地点的库和有用的函数
 

使用Windows脚本宿主运行脚本

WSH 提供了两个用于执行脚本的接口,一个用于命令行,一个用于 Windows 环境。这两个接口各使用不同的宿主程序作为 VBScript 引擎:
● cscript.exe:用于在命令行中运行脚本
● wscript.exe:用于在 Windows 环境中运行脚本
之所以有两个宿主程序,是因为 cscript.exe 被设计为从控制台窗口启动(一般来说是 Windows 中的 MS-DOS 窗口),而 wscript.exe 则用于直接与 Windows GUI 进行交互。这两者就功能来讲几乎没有区别。
 
1、命令行执行
执行脚本文件的命令行界面,cscript.exe 调用方法如下:
1. 打开 Run 对话框(按下窗口键+R)或某个命令窗口(在 Windows 9x 中,可以依次单击 Start|Programs|DOS Prompt;在 Windows NT 中,依次单击 Start|Programs|Command Prompt;在 Vista/XP 中,依次单击 Start|All Programs|Accessories|Command Prompt)。
注意,在使用 Windows Vista 时,打开 Command Prompt 需要系统管理员权限。最简
单的方法是以系统管理员身份在开始菜单中用鼠标右键单击 Command Prompt 并选择 Ru
n。
2. 执行脚本如下:
cscript c:\folderName\YourScriptName.vbs
如果直接在命令行中运行 cscript.exe 时不加参数,就只会得到使用帮助信息:
用法:CScript scriptname.extension [option...] [arguments...]
选项:
//B 批模式:不显示脚本错误及提示信息
//D 启用 Active Debugging
//E:engine 使用执行脚本的引擎
//H:CScript 将默认的脚本宿主改为 CScript.exe
//H:WScript 将默认的脚本宿主改为 WScript.exe (默认)
//I 交互模式(默认,与 //B 相对)
//Job:xxxx 执行一个 WSF 工作
//Logo 显示徽标(默认)
//Nologo 不显示徽标:执行时不显示标志
//S 为该用户保存当前命令行选项
//T:nn 超时设定秒:允许脚本运行的最长时间
//X 在调试器中执行脚本
//U 用 Unicode 表示来自控制台的重定向 I/O
 
2、在Windows环境中执行WSH
执行脚本文件的 Windows GUI 界面是 wscript.exe,它允许以下列几种方式执行文件:
● 如果文件的类型注册为在 WSH 中执行,就可以直接在文件夹窗口或桌面上双击
这些文件的图标来执行。
● 如果使用 Run 命令对话框,那么就只要输入脚本的完整路径和名称即可。
在 Run 命令对话框中,可以调用 wscript.exe。
执行脚本如下:
wscript c:\folderName\YourScriptName.vbs
如果在命令行提示符下运行 wscript.exe,就不会有输出信息,而是会出现一个如图所示的对话框。该对话框提供了最基本的定制选项。
单击 OK 按钮后,将不会有任何反应。在系统级定制脚本行为的唯一方法就是使用先前曾详细介绍的 cscript 选项。
 

WScript对象

WSH 对象模型的基础就是 WScript 对象。这个对象提供了使开发人员能够访问各种信息的属性和方法,如:
● 将要执行的脚本的名称和路径信息
● Microsoft 脚本引擎的版本
● 与外部对象的链接
● 与用户的交互
● 延迟或中断脚本执行的能力
 
1、WScript属性
WScript 对象具有下列属性:
● Arguments
● FullName
● Interactive
● Name
● Path
● ScriptFullName
● ScriptName
● StdErr
● StdIn
● StdOut
● Version
 
1.Arguments
Arguments 属性包含了 WshArguments 对象(一个参数集合)。从该集合中获取单个参数时,使用由 0 开始的索引。
例、新建一个Argu.vbs脚本文件,写入如下代码
Dim objArgs,i,sum,s1,s2
Set objArgs = WScript.Arguments
s1 = objArgs.Item(0)
s2 = objArgs.Item(1)
sum = 0
For i = s1 To s2
sum = sum + i
Next
WScript.Echo "从"&s1&"到"&s2&"之间的整数和为:"&sum
在打开命令提示符,进入到当前脚本文件所在路径,输入
cscript Argu.vbs 1 100 //nologo
按回车,即可算出从1到100之间的整数和为:5050
 
2.FullName
FullName 属性是一个只读的字符串,它代表宿主可执行文件(cscript.exe 或 wscript.exe)的有效完整路径。下面的代码使用了 FullName 属性。
WScript.Echo WScript.FullName
 
3.Interactive
Interactive 属性设置脚本的模式,或识别脚本的模式。使用该属性会返回一个布尔值。有两种可用的模式:批处理模式和交互模式。
可以使用 WSH 命令行开关脚本模式//I(交互模式)和//B(批处理模式)来设置脚本模式。
 
4.Name
Name 属性返回 WScript 对象(宿主可执行文件)的名称,它是一个只读的字符串。下面的代码使用了 Name 属性:
WScript.Echo WScript.Name
 
5.Path
Path 属性返回包含宿主可执行文件(cscript.exe 或 wscript.exe)的目录名。该属性返回一个只读的字符串。
下面的 VBScript 代码将显示可执行文件所在的目录名:
WScript.Echo WScript.Path
 
6.ScriptFullName
ScriptFullName 属性返回当前正在运行的脚本的完整路径。该属性返回一个只读的字符
串。
 
7.ScriptName
ScriptName 属性返回当前正在运行的脚本的文件名。该属性返回一个只读的字符串。
 
8.StdErr
StdErr 属性开放当前脚本的只写的错误输出流。该属性返回一个标识标准错误流的对象。只有使用 cscript.exe 时才能访问 StdIn、StdOut 和 StdErr 流。使用 wscript.exe 时如果想访问这些流就会产生一个错误。
 
9.StdIn
StdIn 属性开放当前脚本的只读的输入流。该属性返回一个标识标准错误流的对象。
 
10.StdOut
StdOut 属性开放当前脚本的只写的错误输出流。该属性返回一个标识标准错误流的对象。
 
下面的示例使用了这三种类型的内建流打印匹配某一特定扩展名的所有文件列表。这是通过将 DOS 的 dir 命令结果使用管道重定向到过滤器脚本来实现的,其中将扩展名字符串作为参数。
例、新建一个filter.vbs脚本文件,写入如下代码
'用法:dir | csript filter.vbs ext
' ext:需要匹配的扩展名
Dim StreamOut,StreamIn,StreamErr
Set StreamOut = WScript.StdOut
Set StreamIn = WScript.StdIn
Set StreamErr = WScript.StdErr
Dim strExt,strLineIn
Dim intMatch
strExt = WScript.Arguments(0)
intMatch = 0 
Do While Not StreamIn.AtEndOfStream
 strLineIn = StreamIn.ReadLine
 If StrComp(strExt,Right(strLineIn,Len(strExt)),vbTextCompare)=0 Then
  StreamOut.WriteLine strLineIn
  intMatch = intMatch + 1
 End If
Loop
If intMatch = 0 Then
 StreamErr.WriteLine "未找到"&strExt&"文件"
End if
在打开命令提示符,进入到当前脚本文件所在路径,输入
dir /s | filter.vbs vbs //nologo
按回车,即可查询当前目录及子目录下的所有扩展名为.vbs的文件
这个示例中使用 StdIn、StdOut 和 StdErr 进行消息的处理,所以不仅能将匹配的文
件打印在屏幕上,也能够将输出结果发送到一个文本文件或其他有重定向或附加管道功能的
应用程序中。
 
11.Version
该属性返回 WSH 的版本。下面的代码显示当前 WSH 的版本。
WScript.Echo WScript.Version
 
2、WScript方法
WScript 对象具有下列方法:
● CreateObject
● ConnectObject
● DisconnectObject
● GetObject
● Echo
● Quit
● Sleep
 
1.CreateObject
WScript 对象的这个方法用于创建一个 COM 对象。
object.CreateObject(strProgID[,strPrefix])
  • object:WScript 对象。
  • strProgID:值为字符串,表示想要创建的对象的程序标识符(ProgID)。
  • strPrefix:可选。值为字符串,表示函数前缀。
使用 CreateObject 方法和 strPrefix 参数创建的对象是已连接对象。对象被创建后,其输
出接口与脚本文件相连接。每个事件函数都由这个前缀加上事件的名称来命名。如果创建对象时没有使用 strPrefix 参数,也可以使用 ConnectObject 方法同步对象的事件。只要对象产生一个事件,WSH 就会调用一个子程序,其名称是 strPrefix 加上事件的名称。
 
2.ConnectObject
该方法将对象的事件源连接到具有给定前缀的函数。
object.ConnectObject(strObject, strPrefix)
  • object:WScript 对象。
  • strObject:必需的。表示想要连接的对象名称的字符串。
  • strPrefix:必需的。表示函数前缀的字符串。
同步一个对象的事件时,已连接对象是很有用的。对象被创建后,ConnectObject 方法将对象的输出接口连接到脚本文件。事件函数的名称就是这个前缀加上事件的名称。
 
3.DisconnectObject
该方法用于断开已连接对象的事件源的连接。
object.DisconnectObject(obj)
  • object:WScript 对象。
  • obj:表示想要断开连接的对象名称的字符串。
断开一个对象的连接意味着 WSH 无法再响应它的事件。但是,有一点很重要,那就是断开连接后对象仍然能够产生事件。还要注意的是,如果指定的对象尚未连接,DisconnectObject 方法就不会做任何事。
 
4.GetObject
GetObject 方法根据指定的 ProgID 获取某个已存在对象,或从文件创建一个新的对象。
object.GetObject(strPathname [,strProgID], [strPrefix])
  • object:WScript 对象。
  • strPathname:包含将对象保存到磁盘的文件所使用的完整的有效路径名。
  • strProgID:可选。值为字符串,表示想要创建的对象的程序标识符(ProgID)。
  • strPrefix:可选。进行对象事件同步时有用。如果提供了 strPrefix 参数,WSH 就会在创建对象之后将对象的输出接口连接到脚本文件。
如果内存中存在对象的一个实例,或者想从文件创建一个对象,都需要使用 GetObject方法。GetObject 方法适用于所有 COM 类,与创建对象使用的脚本语言无关。如果内存不存在对象的实例,也不想从文件创建对象,就可以使用 CreateObject 方法。
 
5.Echo
该方法输出一个消息框或一个命令控制台窗口。
object.Echo [Arg1] [,Arg2] [,Arg3] ...
  • object:WScript 对象。
  • Arg1、Arg2、Arg3、……:可选。表示要显示项目的列表。
根据当前使用的 WSH 引擎的不同,Echo 方法输出的类型也有所变化。
 
6.Quit
该方法强制脚本在任意时刻立即停止执行。
  • object.Quit([intErrorCode])
  • object:WScript 对象。
  • intErrorCode:可选。返回一个整数值,作为进程的返回码。如果忽略 intErrorCode 参数,就不会有返回值。
Quit 方法可以用于返回一个可选的错误代码。如果 Quit 方法是脚本中的最后一条命令(并且不需要返回一个非零值),就可以不使用任何参数,这样脚本就会正常退出。
 
7.Sleep
该方法将脚本的执行挂起一段时间,然后接着执行。
object.Sleep(intTime)
  • object:WScript 对象。
  • intTime:这是一个整数值,表示希望脚本进程保持非活跃状态的时间间隔(以毫秒为单位)。
使用这个方法时,运行脚本的线程被挂起,占用的 CPU 被释放。当间隔时间到,就会继续恢复执行。要想被事件所触发,脚本必须持续活跃,因为已经结束执行的脚本是肯定不能检测到任何事件的。脚本所处理的事件在脚本休眠时仍然会被执行。
向 Sleep 方法传递 0 或-1 作为参数,就不会导致脚本不确定性地挂起。
例、新建一个time.vbs脚本文件,写入如下代码
Do While True
WScript.Echo Time
WScript.Sleep 1000
Loop
在打开命令提示符,进入到当前脚本文件所在路径,输入
cscript time.vbs //nologo
按回车,即可每过一秒显示当前的时间
 
 

WshArguments对象

编程过程中,参数的使用是一种非常有益的机制,可以给脚本提供输入以支持它的工作。
如果考虑在 DOS 提示符下工作,那么多数命令行可执行文件都使用参数来确定要做的事情。
创建使用参数的脚本是编写可重用代码的一个良好开端。创建设计用于在命令行中执行
的脚本的开发人员会立竿见影地感受到使用 Arguments 属性带来的好处。不过,在 WSH 中,
还有更好的理由来使用这个对象,因为这就是拖放功能得以实现的原因。使用这个对象的最后一个好处就是它允许开发人员在其他脚本中重用脚本代码,只要以
命令行运行的方式运行想重用的脚本,并给它传递可能在运行时需要的参数即可。
 
1、访问 WshArgument 对象
它是通过使用 WScript.Arguments 属性来实现的。
Set objArgs = WScript.Arguments
 
2、WshArguments对象的属性
WshArgument 对象是一个由 WScript 对象的 Arguments 属性返回的集合(WScript.Arguments)。
访问命令行参数集合有下列三种方法:
  • 使用 WshArguments 对象访问整个参数集合。
  • 使用 WshNamed 对象访问有名字的参数。
  • 使用 WshUnnamed 对象访问没有名字的参数。
下面的例子是一个遍历 WshArguments 集合的简单循环,依次显示每个元素:
Set objArgs = WScript. Arguments
For x = 0 to objArgs.Count - 1
WScript.Echo objArgs(x)
Next
 
 

WshShell对象

Windows 脚本宿主提供了一种便捷的方式,可以用于获取系统环境变量的访问、创建
快捷方式、访问 Windows 的特殊文件夹,如 Windows Desktop,以及添加或删除注册表条
目。还可以使用 Shell 对象的功能创建更多的定制对话框以进行用户交互。
 
1、访问WshShell对象
要使用下面这一节中将要列出的属性,程序员必须创建一个 WScript.Shell 对象的实例。
这样以后对 WshShell 对象的引用实际就是对新创建实例的引用。
Set WshShell= WScript.CreateObject( "WScript.Shell" )
 
2、WshShell对象的属性
WshShell 对象有三个属性:
● CurrentDirectory
● Environment
● SpecialFolders
 
1.CurrentDirectory
该属性获取或更改当前活动目录。
object.CurrentDirectory
  • object:WshShell 对象。
Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
WScript.Echo WshShell.CurrentDirectory
 
2.Environment
该属性返回 WshEnvironment 对象(一个环境变量集合)。
object.Environment ([strType])
  • object:WshShell 对象。
  • strType:可选。指定环境变量的位置。
Environment 属性包含 WshEnvironment 对象(一个环境变量集合)。如果指定了 strType,就指定了环境变量所在的级别的值:
  • System
  • User
  • Volatile
  • Process
如果没有指定 strType,Environment 属性就会根据不同的操作系统返回不同的环境变量类型。
要注意的是,脚本有可能访问其他应用程序所设置的环境变量。
下面是一个关于在代码中如何使用上面列出的这些变量的示例。该示例返回系统中存在的处理器个数。
Set WshShell = CreateObject("Wscript.Shell")
Set WshSysEnv = WshShell.Environment
WScript.Echo WshSysEnv("NUMBER_OF_PROCESSORS")
 
3.SpecialFolders
该属性返回一个SpecialFolders对象(一个特殊文件夹集合)
object.SpecialFolders(objWshSpecialFolders)
  • object:WshShell 对象。
  • onjWshSpecialFolders:特殊文件夹的名称。
WshSpecialFolders 对象是一个集合,它包含所有的 Windows 特殊文件夹。
特殊文件夹的名称用于索引集合以获取想要的具体文件夹。如果被请求的文件夹(strFolderName)不可用,SpecialFolder 属性将返回一个空字符串。
下面是可用的特殊文件夹:
  • AllUsersDesktop
  • AllUsersStartMenu
  • AllUsersPrograms
  • AllUsersStartup
  • Desktop
  • Favorites
  • Fonts
  • MyDocuments
  • NetHood
  • PrintHood
  • Programs
  • Recent
  • SendTo
  • StartMenu
  • Startup
  • Templates
下面的代码用于获取 Start Menu 文件夹并在 strDeskTop 变量中保存路径以备后面的使用。
strDesktop = WshShell.SpecialFolders("StartMenu")
 
3、WshShell对象的方法
WshShell 对象有 11 个方法。所有这些方法都与操作系统 shell 相关,可以用于控制 Wi
ndows 注册表,也可以创建弹出式消息框和快捷方式以及激活和控制正在运行的应用程序:
● Run
● SendKeys
● AppActivate
● Exec
● CreateShortcut
● Popup
● ExpandEnvironmentStrings
● LogEvent
● RegRead
● RegWrite
● RegDelete
 
1.Run
Run 方法在一个新进程中运行一个程序。
object.Run(strCommand, [intWindowStyle], [bWaitOnReturn])
object:WshShell 对象。
  • strCommand:一个字符串,表示想要运行的命令行,必须包含所有要传递给可
  • 执行文件的参数。
  • intWindowStyle:可选。一个整数值,表示程序窗口的外观。并不是所有的程序
  • 都使用这一信息。
  • bWaitOnReturn:可选。一个 Boolean 值,表示脚本在其下一条语句之前是否需要等待程序结束。如果设置为 True,脚本一直停止执行直到程序结束,Run 返回任一个由程序返回的错误代码。如果设置为 False(默认),程序启动后,Run 方法立即返回 0(这不是错误代码)。
Run 方法返回一个整数。该方法使用一个新的 Windows 进程启动运行一个程序。可以
让脚本等待程序运行完毕再继续执行,这样就可以是脚本和程序同步执行。如果将某个文件类型成功注册到某一个特定程序,那么对该文件调用 Run 方法就会启动注册的程序。例如,对一个*.txt 文件调用 Run 方法,就会启动记事本程序并将文本文件加载到其中。下表列出了 intWindowStyle 的可用值。
IntWindowStyle
描 述
0
隐藏当前窗口并激活另一个窗口
1
激活并显示一个窗口
如果该窗口处于最小化或最大化状态,系统将恢复其原始尺寸
如果是初次显示该窗口,应用程序就应该指定这个标志
2
激活并以最小化状态显示窗口
3
激活并以最大化状态显示窗口
4
以其最近位置和尺寸显示一个窗口
活跃的窗口将继续保持活跃
5
以其当前位置和尺寸显示一个窗口
6
最小化指定的窗口并将其激活为 Z 序列中仅次于顶层的窗口
7
以最小化形式显示窗口
活跃的窗口将继续保持活跃
8
以其当前状态显示窗口
活跃的窗口将继续保持活跃
9
激活并显示窗口
如果该窗口处于最小化或最大化状态,系统将恢复其原始尺寸
如果要恢复一个最小化窗口,应用程序就应该指定这个标志
10
根据启动应用程序的程序状态设置窗口显示的状态
下面的代码打开一个命令提示符窗口并显示驱动器 C:的内容。
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "cmd /K cd /d c:\ & Dir",9
Set WshShell = Nothing
 
2.SendKeys
Sendkeys 方法向活跃窗口发送一次或多次击键(仿佛来自键盘)。
object.SendKeys(string)
  • object:WshShell 对象。
  • string:一个字符串值,表示想要发送的击键。
要发送一个单独的键盘字符,只要将该字符本身作为字符串参数发送即可。例如,要发送字母“v”。要发送一个空格,可以发送“ ”。
也可以使用 SendKeys 方法发送多次击键。可以依次加入每次击键,形成一个序列,创建一个复合的字符串参数来表示击键的序列。例如,要发送击键 x、y 和 z,可以发送字符串参数“xyz”
SendKeys 方法使用某些字符作为其他字符的限定符。这些特殊的字符包括圆括弧、尖括弧、花括弧,以及下表列出的一些字符:
加号
+
上尖角
^
百分号
%
波浪号
~
在 SendKeys 中使用方括弧“*+”时,没有什么特殊含义,但为了满足那些为它们指定了特殊含义的应用程序(例如 Dynamic Data Exchange)的需要,仍需要将它们包含在花括弧中。
要发送方括弧字符,可以使用字符串数组“,*-”发送左括弧,使用字符串数组“,+-”发送右括弧。要发送花括弧字符,可以发送字符串参数“,,-”发送左括弧,发送字符串“,--”发送右括弧。
某些击键不产生任何字符(如 Enter 和 Tab),某些击键代表一些动作(如 Backspace 和 Break)。要发送这些击键,可以发送下表列出的这些字符串参数。
Backspace
{BACKSPACE}, {BS}, or {BKSP}
Break
{BREAK}
Caps Lock
{CAPSLOCK}
Del or Delete
{DELETE} or {DEL}
Down Arrow
{DOWN}
End
{END}
Enter
{ENTER} or ~
Esc
{ESC}
Help
{HELP}
Home
{HOME}
Ins or Insert
{INSERT} or {INS}
Left Arrow
{LEFT}
Num Lock
{NUMLOCK}
Page Down
{PGDN}
Page Up
{PGUP}
Print Screen
{PRTSC}
Right Arrow
{RIGHT}
Scroll Lock
{SCROLLLOCK}
Tab
{TAB}
Up Arrow
{UP}
F1
{F1}
F2
{F2}
F3
{F3}
F4
{F4}
F5
{F5}
F6
{F6}
F7
{F7}
F8
{F8}
F9
{F9}
F10
{F10}
F11
{F11}
F12
{F12}
要发送常规字符与 Shift、Ctrl 或 Alt 键的组合,就需要创建一个复合的字符串参数以表示这种击键组合。可以在常规击键之前加上下表中的一个或多个特殊字符。
特 殊 字 符
Alt
%
Ctrl
^
Shift
+
要表示按下其他某些键的同时,必须按下 Shift、Ctrl 或 Alt 键的情况,可以修改圆括弧中包含的击键序列创建一个复合的字符串参数。例如下面这些击键以及相应的操作:
· 按下 Shift 的同时按下 V 和 B,发送字符串参数"+(VB)"。
· 按下 Shift 的同时按下 V,然后长按 B(不要按下 Shift),发送字符串参数"+VB"。
可以使用 SendKeys 方法发送一个单独的击键被按下若干次所构成的击键模式。可以创建一个复合的字符串参数,指定想要重复的击键,后面再跟上想要重复的次数。使用的复合字符串参数形如{击键 次数}。例如,要发送“V”被按下 10 次的击键模式,可以发送字符串参数“{V 10}”
单个击键被按下若干次的模式是唯一的一种能够发送的击键模式。例如,可以发送 10次“V”,但不能发送 10 次“Ctrl+V”。注意,不能向应用程序发送 Print Screen 键{PRTSC}。
例1、模拟键盘在记事本中输入"Hello"并另存为当前文件夹,保存名称为"hello.txt",并退出。
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "notepad"
WScript.Sleep 1000
WshShell.SendKeys "H"
WScript.Sleep 200
WshShell.SendKeys "e"
WScript.Sleep 200
WshShell.SendKeys "l"
WScript.Sleep 200
WshShell.SendKeys "l"
WScript.Sleep 200
WshShell.SendKeys "o"
WScript.Sleep 200
WshShell.SendKeys "~"
WScript.Sleep 200
WshShell.SendKeys "%FS"
WScript.Sleep 200 
WshShell.SendKeys "Hello.txt"
WScript.Sleep 200
WshShell.SendKeys "%S"
WScript.Sleep 200
WshShell.SendKeys "%FX"
 
例2、模拟键盘在计算器中计算"210*56="
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "calc"
WScript.Sleep 3000
WshShell.SendKeys "2"
WScript.Sleep 200
WshShell.SendKeys "1"
WScript.Sleep 200
WshShell.SendKeys "0"
WScript.Sleep 200
WshShell.SendKeys "{*}"
WScript.Sleep 200
WshShell.SendKeys "5"
WScript.Sleep 200
WshShell.SendKeys "6"
WScript.Sleep 200
WshShell.SendKeys "{=}"
 
3.AppActivate
这个方法可以用于激活一个指定的已经打开的应用程序窗口。
object.AppActivate title
  • object:WshShell 对象。
  • title:指定要激活的应用程序。这可以是一个包含应用程序标题的字符串(就像出现在标题栏中的那样)或应用程序的进程 ID。
AppActivate方法返回一个Boolean类型的值,标志着过程调用是否成功。这个方法用于
将焦点切换至指定名称的应用程序或窗口。方法的调用不影响应用程序的最大化或最小化状态。当进行了切换焦点(或关闭窗口)的动作之后,焦点就会从已经获得焦点的应用程序上移走。
为了确定要激活的应用程序,指定的标题名称会与每个正在运行的应用程序的标题字符串做比较。如果没有准确的匹配,那么具有以 title 所指定的值开始的标题字符串的应用程序就会被激活。如果还是没有能找到合适的应用程序,那么具有以 title 所指定的值结束的标题字符串的应用程序就会被激活。如果存在多个名为 title 所指定的值的应用程序实例,就会任意激活其中的一个。但是,无法控制具体选择哪一个。
 
4.Exec
Exec 方法在一个子命令解释器中运行一个应用程序,子命令解释器提供对 StdIn、StdOut 和 StdErr 流的访问。
object.Exec(strCommand)
  • object:WshShell 对象。
  • strCommand:一个字符串值,表示用于运行脚本的命令行。
Exec 方法返回一个 WshScriptExec 对象,该对象提供使用 Exec 运行的脚本的状态和错误信息,也提供对 StdIn、StdOut 和 StdErr 通道的访问。Exec 方法只能执行命令行应用程序,并且不能用于运行远程脚本。
 
5.CreateShortcut
该方法可以用于创建一个新的快捷方式,或打开一个已有的快捷方式。
object.CreateShortcut(strPathname)
  • object:WshShell 对象。
  • strPathname:一个表示要创建的快捷方式的路径名。
CreateShortcut 方法返回一个 WshShortcut 对象或一个 WshURLShortcut 对象。调用 CreateShortcut 方法不会导致快捷方式的真正创建,而是将快捷方式对象以及对其所做的修改保存在内存中,直到使用 Save 方法将其保存至磁盘。要真正创建一个快捷方式,必须完成下列三个步骤:
(1) 创建 WshShortcut 对象的一个实例。
(2) 初始化其属性。
(3) 使用 Save 方法将其保存到磁盘。
容易出问题的是将参数放到快捷方式对象的 TargetPath 属性中,这通常是无用的。快捷方式的所有参数都必须放在 Arguments 属性中。
set WshShell = WScript.CreateObject("WScript.Shell")
strDesktop = WshShell.SpecialFolders("Desktop")
set oShellLink = WshShell.CreateShortcut(strDesktop & "\Shortcut Script.lnk")   '保存的路径及名称,快捷方式扩展名为.lnk
oShellLink.TargetPath = WScript.ScriptFullName    '创建快捷方式目标的路径及文件名
oShellLink.WindowStyle = 1
oShellLink.Hotkey = "CTRL+ALT+S"    '打开快捷方式的快捷键
oShellLink.IconLocation = "calc.exe, 0"    '图标文件的所在路径及名称
oShellLink.Description = "Shortcut to Notepad"    '快捷方式的说明
oShellLink.WorkingDirectory = strDesktop
oShellLink.Save
 
6.Popup
该方法用于在弹出式消息框中显示文本。
intButton = object.Popup(strText,[nSecondsToWait],[strTitle],[nType])
  • object:WshShell 对象。
  • strText:一个字符串值,包含了想要显示在弹出式消息框中的文本。
  • nSecondsToWait:可选。一个数值,表示想要弹出式消息框显示的最长时间(以秒为单位)。如果 nSecondToWait 等于 0(默认值),弹出式消息框就一直可见,直到被关闭。如果 nSecondToWait 大于 0,那么弹出式消息框就在 nSecondToWait 秒后关闭。
  • strTitle:可选。一个字符串值,包含了想要出现在弹出式消息框标题栏中的文本。如果没有提供 strTitle 这个参数,弹出式消息框的标题就会被设置为默认的字符串―Windows Script Host‖。
  • nType:可选。一个数值,表示想在弹出式消息框中出现的按钮和图标的类型。这些决定了消息框的使用场合和用途。nType 的功能与 Microsoft Win32 应用程序编程接口中的 MessageBox 函数相同。下面的表格显示了各种值和它们的含义。可以合并列表中不同的值获得各种不同的结果。
  • IntButton:一个整数值,表示关闭消息框时单击的按钮的序号,这个值是由 Popup 方法返回的。
无论使用那种宿主可执行文件(wscript.exe 或 cscript.exe)运行脚本,都可以使用 Popup方法显示一个消息框。
要以诸如 HeBrew 或 Arabic 这样的 RTL 语言的格式(从右至左)正确显示文本,可以在 nType 参数之前加上 h00100000(十进制的 1048576)。
按钮类型:
描 述
0
显示 OK 按钮
1
显示 OK 和 Cancel 按钮
2
显示 Abort、Retry 和 Ignore 按钮
3
显示 Yes、No 和 Cancel 按钮
4
显示 Yes 和 No 按钮
5
显示 Retry 和 Cancel 按钮
图标类型:
描 述
16
显示终止(Stop Mark)图标
32
显示问号(Question Mark)图标
48
显示叹号(Exclamation Mark)图标
64
显示提示信息(Information Mark)图标
IntButton 的返回值代表已单击的按钮编号。如果在 nSecondsToWait 秒之前没有单击任何按钮,inButton 就被设置为-1.
关闭消息框时所单击的按钮的编号:
描 述
1
OK 按钮
2
Cancel 按钮
3
Abort 按钮
4
Retry 按钮
5
Ignore 按钮
6
Yes 按钮
7
No 按钮
下面的代码显示了各种消息框按钮和图标的使用:
Sub question
Dim WshShell, BtnCode
Set WshShell = WScript.CreateObject("WScript.Shell")
'消息框文本为"Do you like this code?";消息框标题为"Quick survey";消息框的显示时间为7秒;显示Yes和No按钮(4);显示问号图标(32)
BtnCode = WshShell.Popup("Do you like this code?", 7, "Quick survey:", 4 + 32)   
Select Case BtnCode
case 6 WScript.Echo "Glad to hear it - Thanks!"    '点击Yes输出文字
case 7 WScript.Echo "I’m sorry you didn’t like it."    '点击No输出文字
case -1 WScript.Echo "Helllloooooooo?" :Call question    '7秒后无任何点击输出文字,并调用question过程
End Select
End Sub
Call question
 
7.ExpandEnvironmentStrings
该方法返回环境变量的扩充值。
object.ExpandEnvironmentStrings(strString)
  • object:WshShell 对象。
  • strString:一个字符串值,表示想要扩充的环境变量的名称。
这个方法只对 PROCESS 环境空间内定义的环境变量进行扩充。环境变量的名称必须以“%”包围,并且是大小写不敏感的。
set WshShell = WScript.CreateObject("WScript.Shell")
WScript.Echo "The path to WinDir is " & WshShell.ExpandEnvironmentStrings("%WinDir%")
 
8.LogEvent
LogEvent 方法向日志文件中添加一个事件条目。
object.LogEvent(intType, strMessage [,strTarget])
  • object:WshShell 对象。
  • intType:表示事件类型的整数值。
  • strMessage:包含日志条目文本的字符串值。
  • strTarget:可选。一个字符串值,表示事件日志所存储的计算机系统名称(默认的是本地计算机系统)。
这个方法用于返回一个 Boolean 值(如果事件被成功记录,就返回 True,否则返回 False)。
有 6 种事件类型:
类 型
0
SUCCESS
1
ERROR
2
WARNING
4
INFORMATION
8
AUDIT_SUCCESS
16
AUDIT_FAILURE
下面的代码显示了 LogEvent 的运行,它基于事件的成功与否对其进行记录。
Set WshShell = WScript.CreateObject("WScript.Shell")
'assume that rS contains a return code
'from another part of the code
if rS then
WshShell.LogEvent 0, "Script Completed Successfully"
else
WshShell.LogEvent 1, "Script failed"
end if
 
9.RegRead
该方法返回注册表中一个键或键值的名称。
object.RegRead(strName)
  • object:WshShell 对象。
  • strName:一个字符串值,表示想获得的键或键值的名称。
RegRead 方法返回的值有 5 种类型
类 型
描 述
形 式
REG_SZ
字符串
字符串
REG_DWORD
数字
整数
REG_BINARY
二进制值
整数构成的 VBArray
REG_EXPAND _ SZ
可扩充字符串
(例如%windir%\\notepad.exe)
字符串
REG_MULTI_SZ
字符串数组
字符串构成的 VBArray
如果 strName 以反斜杠结尾,就可以指定键名,如果不使用反斜杠,就可以指定键值名。完整的有效键名和键值名是以一个根键的名称作为前缀的。
一个键值包含三部分:
①名称(Name)
②数据类型(Data Type)
③值(Value)
如果指定了键名(相对于键值名来说),RegRead 就会返回默认的值。所以要读取一个键的默认值,只要指定键的名称即可。
完整的有效键名和键值名是以一个根键的名称作为起始的。使用 RegRead 方法时,也可以使用根键名的缩写形式。
5 种可能使用的根键:
根 键 名
缩 写
HKEY_CURRENT_USER
HKCU
HKEY_LOCAL_MACHINE
HKLM
HKEY_CLASSES_ROOT
HKCR
HKEY_USERS
HKEY_USERS
HKEY_CURRENT_CONFIG
HKEY_CURRENT_CONFIG
 
10.RegWrite
该方法可以创建一个新键,给现有键添加另一个键值名(并指定一个值),或修改现有键
值名的值。
object.RegWrite(strName, anyValue [,strType])
  • object:WshShell 对象。
  • strName:一个字符串值,表示想创建、添加或修改的键名、键值名或键值。
  • anyValue:想要创建的新键的名称,或想添加到现有键的键值名,或想指定给某个现有键值名的新键值。
  • strType:可选。一个表示键值数据类型的字符串。
如果 strName 以反斜杠结尾,就可以指定键名,如果不使用反斜杠,就可以指定键值名。
RegWrite 方法自动将参数 anyValue 转换成一个字符串或一个整数,而由 strType 的值决定其数据类型(是字符串还是整数)。
strType 方法的可用选项:
转换至
strType
字符串
REG_SZ
字符串
REG_EXPAND_SZ
整数
REG_DWORD
整数
REG_BINARY
RegWrite 方法不支持 REG_MULTI_SZ 类型。
RegWrite 最多写入一个 DWORD 或 REG_BINARY 值,该方法不支持更大的值。完整的有效键名和键值名是以一个根键的名称作为起始的。使用 RegWrite 方法时,也可以使用根键名的缩写形式。
strType 的4种可能被指定的数据类型:
类 型
描 述
形 式
REG_SZ
字符串
字符串
REG_DWORD
数字
整数
REG_BINARY
二进制值
整数构成的 VBArray
REG_EXPAND _ SZ
可扩充字符串
(例如%windir%\\notepad.exe)
字符串
 
11.RegDelete
该方法从注册表中删除一个键或其键值。
object.RegDelete(strName)
  • object:WshShell 对象。
  • strName:一个字符串值,表示要删除的注册表键或键值的名称。
如果 strName 以反斜杠结尾,就可以指定键名,如果不使用反斜杠,就可以指定键值名。完整的有效键名和键值名是以一个根键的名称作为前缀的。使用 RegDelete 方法时,也可以使用根键名的缩写形式。
下面的脚本将创建、读取并删除 Windows 注册表键。
Dim WshShell, bKey
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.RegWrite "HKCU\Software\WROX\VBScript\", 1, "REG_BINARY"
WshShell.RegWrite "HKCU\Software\WROX\VBScript\ProgRef","VBS_is_great","REG_SZ"
bKey = WshShell.RegRead("HKCU\Software\WROX\VBScript\")
WScript.Echo WshShell.RegRead("HKCU\Software\WROX\VBScript\ProgRef")
WshShell.RegDelete "HKCU\Software\WROX\VBScript\ProgRef"
WshShell.RegDelete "HKCU\Software\WROX\VBScript\"
WshShell.RegDelete "HKCU\Software\WROX\"
在修改注册表设置时,需要特别的小心。对注册表进行不当的修改可能会导致系统变得不稳定,甚至使其变得完全不可用。如果不了解注册表的内部工作机制,那么强烈建议在实际操作之前就此问题阅读一些相关的资料。
 
 

WshNamed对象

WshName对象提供从命令行对有名称参数的访问。
WshArguments 对象的 Named 属性返回 WshNamed 对象,这是一个有名称参数的集合。
这个集合使用了参数名称作为索引来获取每个参数的值。访问命令行参数集合有下列三种方
法:
① 使用 WshAruments 对象访问整个参数集合。
② 使用 WshNamed 对象访问有名字的参数。
③ 使用 WshUnnamed 对象访问没有名字的参数。
 
1、访问WshNamed对象
该对象的访问是通过创建 WScript.Named 对象的实例实现的。
Set argsNamed = WScript.Arguments.Named
 
2、WshNamed对象的属性
WshNamed 对象具有两个属性:
● Item
● Length
 
1.Item
Item 属性提供了对 WshNamed 对象中的项目的访问。
Object.Item(key)
  • object:WshNamed 对象。
  • key:想要获取的项目名称。
Item 属性返回一个字符串。对于集合来说,它根据给定的关键字返回一个项目。在命令行中输入参数时,可以在字符串中使用空格,只要将其包含在引号中即可。下面这行代码可以用于在命令提示符下运行脚本:
sample.vbs /a:arg1 /b:arg2
如果脚本中包含下面的代码。
WScript.Echo WScript.Arguments.Named.Item("b")
WScript.Echo WScript.Arguments.Named.Item("a")
就会产生这样的输出结果。
arg2
arg1
 
2.Length
Length 属性是一个只读的整数,可以在编写 Jscript 脚本时使用。
 
3、WshNamed对象的方法
WshNamed 对象具有两个方法:
● Count
● Exists
 
1.Count
Count 方法返回 WshNamed 或 WshUnnamed 对象的选项开关个数。
object.Count
  • object:WshNamed 对象。
Count 方法用于返回一个整数值。该方法是给 VBScript 用户使用的,JScript 用户应该使用 length 属性。
For x = 0 to WScript.Arguments.Count-1
WScript.Echo WScript.Arguments.Named(x)
Next x
 
2.Exists
Exists 方法可以用于确定某一给定的键值是否存在于 WshNamed 对象中。
object.Exists(key)
  • object:WshNamed 对象。
  • key:字符串值,表示 WshNamed 对象的一个参数。
这个方法返回一个 Boolean 值。如果请求的参数的确在命令行中被指定,就返回 True(否则返回 False)。在命令提示符中输入下面的代码运行脚本:
sample.vbs /a:arg1 /b:arg2
下面的代码可以用于确定是否使用了参数/a、/b 和/c:
WScript.Echo WScript.Arguments.Named.Exists("a")
WScript.Echo WScript.Arguments.Named.Exists("b")
WScript.Echo WScript.Arguments.Named.Exists("c")
 
 

WshUnnamed对象

WshUnnamed 对象提供了从命令行中对未命名对象的访问。它是一个由 WshAruments对象的 Unnamed 属性返回的只读集合。从该集合中获取单个参数值时,使用由 0 开始的索引。访问命令行参数集合有下列三种方法:
① 使用 WshAruments 对象访问整个参数集合。
② 使用 WshNamed 对象访问有名字的参数。
③ 使用 WshUnnamed 对象访问没有名字的参数。
 
1、访问WshUnnamed对象
该对象的访问是通过创建 WScript.Arguments.Unnamed 对象的实例实现的。
Set argsUnnamed = WScript.Arguments.Unnamed
 
2、WshUnnamed对象的属性
WshUnnamed 对象具有两个属性:
● Item
● Length
这两个属性和 WshNamed 的类似,这里就不再重复介绍。
 
3、WshUnnamed对象的方法
WshUnnamed 对象具有一个方法:
● Count
这个方法和 WshNamed 的类似,这里就不再重复介绍。
 
 

WshNetwork对象

WshNetwork 对象提供对计算机所连接的网络上共享资源的访问。如果想连接到网络共享或网络打印机,从网络共享或网络打印机断开连接,映射或删除网络共享,或访问网络上某一用户的信息,都需要创建一个 WshNetwork 对象。
 
1、访问WshNetwork对象
该对象的访问是通过创建 WScript.Network 对象的实例实现的。
Set WshNetwork = WScript.CreateObject("WScript.Network")
 
2、WshNetwork对象的属性
WshNetwork 对象具有三个属性:
● ComputerName
● UserDomain
● UserName
 
1.ComputerName
ComputerName 属性返回计算机系统的名称。
object.ComputerName
  • object:WshNetwork 对象。
ComputerName 属性包含一个字符串值,表示计算机系统的名称。
 
2.UserDomain
UserDomain 属性返回用户的域名。
object.UserDomain
  • object:WshNetwork 对象。
 
3.UserName
UserName 属性返回某个用户的名称。
object.UserName
  • object:WshNetwork 对象。
UserName 属性以字符串返回一个用户的名称。
Set WshNetwork = CreateObject("WScript.Network")
WScript.Echo WshNetwork.ComputerName
WScript.Echo WshNetwork.UserDomain
WScript.Echo WshNetwork.UserName
 
3、WshNetwork对象的方法
WshNetwork 对象有下列 8 个方法可用:
● AddWindowsPrinterConnection
● AddPrinterConnection
● EnumPrinterConnection
● RemovePrinterConnection
● SetDefaultPrinter
● EnumNetworkDrives
● MapNetworkDrive
● RemoveNetworkDrive
 
1.AddWindowsPrinterConnection
AddWindowsPrinterConnection 方法在计算机系统中添加一个 Windows 打印机连接。
 
2.AddPrinterConnection
AddPrinterConnection 方法在计算机系统中添加一个远程打印机连接。
 
3.EnumPrinterConnection
EnumPrinterConnection 方法返回当前网络打印机的映射信息。
 
4.RemovePrinterConnection
RemovePrinterConnection 方法在计算机系统中删除一个共享的网络打印机连接。
 
5.SetDefaultPrinter
SetDefaultPrinter 方法将某个远程打印机指定为默认打印机。
 
6.MapNetworkDrive
MapNetworkDrive 方法在计算机系统中添加一个共享网络驱动器。
 
7.EnumNetworkDrives
EnumNetworkDrives 方法返回当前网络驱动器的映射信息。
 
8.RemoveNetworkDrive
RemoveNetworkDrive 方法在计算机系统中删除一个共享的网络驱动器。
 
 

WshEnvironment对象

WshEnvironment 对象提供对 Windows 环境变量集合的访问。
这个对象是一个由 WshShell 对象的 Environment 属性返回的环境变量集合。该集合包含全部的环境变量(包括有名称的和没有名称的)。
要获取集合中某个具体的环境变量(及其值),可以使用环境变量名作为索引。
 
1、访问WshEnvironment对象
该对象的访问是通过创建 WScript.Environment 对象的实例实现的。下面的脚本返回运行脚本的系统中安装的处理器个数:
Set WshShell = WScript.CreateObject("WScript.Shell")
Set WshSysEnv = WshShell.Environment("SYSTEM")
WScript.Echo WshSysEnv("NUMBER_OF_PROCESSORS")
 
2、WshEnvironment对象的属性
WshEnvironment 对象具有两个属性:
● Item
● Length
 
1.Item
Item 属性公开集合中的某一指定元素。
Object.Item(natIndex)
  • object:EnumNetworkDrive 或 numPrinterConnections 方法的返回值,或由 Environment 或 SpecialFolders 属性返回的对象。
  • natIndex:设置要获取的元素。
Item 是每个集合的默认属性。对于 EnumNetworkDrive 和 EnumPrinterConnections 集合来说,索引是一个整数,但对于 Environment 和 SpecialFolders 来说,索引是一个字符串。
在 VBScript 中,如果请求的文件夹(strFolderName)不存在,WshShell.SpecialFolders.Item (strFolderName)将返回“Empty”。
 
2.Length
Length 属性是一个只读的整数,可以在编写 Jscript 脚本时使用。
 
2、WshEnvironment对象的方法
WshEnvironment 对象具有两个方法:
● Count
● Remove
 
1.Count
Count 方法返回一个 Long 值,表示集合中元素的个数。
object.Count
  • object:Arguments 对象
Count 方法返回一个整数值。该方法是给 VBScript 用户使用的,JScript 用户应该使用 Length 属性。
 
2.Remove
Remove 方法删除一个现有的环境变量。
object.Remove(strName)
  • object:WshEnvironment 对象。
strName:一个字符串值,表示要删除的环境变量的名称。Remove 方法删除下列类型的环境变量:
① PROCESS
② USER
③ SYSTEM
④ VOLATILE
使用 Remove 方法删除的环境变量将在当前会话结束后被恢复。
Dim WshShell, WshEnv
Set WshShell = WScript.CreateObject("WScript.Shell")
Set WshEnv = WshShell.Environment("PROCESS")
WshEnv("tVar") = "VBScript is Cool!"
WScript.Echo WshShell.ExpandEnvironmentStrings("The value of the test variable is:%tVar%")
WshEnv.Remove "tVar"
WScript.Echo WshShell.ExpandEnvironmentStrings("The value of the test variable is:%tVar%")
 
 

WshSpecialFolders对象

WshSpecialFolders 对象提供对 Windows 特殊文件夹集合的访问。
WshShell 对象的 SpecialFolder 属性返回 WshSpecialFolders 对象。该集合包含对 Windows 特殊文件夹(例如,Desktop 文件夹和 Start menu 文件夹)的引用。从这个集合中可以使用某特殊文件夹的名称作为索引获取该文件夹的路径。一个特殊文件夹的路径依赖于用户环境。如果一台计算机上有多个用户,那么硬盘上就存有若干组特殊文件夹。
下面列出了可用的特殊文件夹:
● AllUsersDesktop
● AllUsersPrograms
● AllUsersStartMenu
● AllUsersStartup
● Desktop
● Favorites
● Fonts
● MyDocuments
● NetHood
● PrintHood
● Programs
● Recent
● SendTo
● StartMenu
● Startup
● Templates
 
1、WshSpecialFolders 对象的属性:Item
2、WshSpecialFolders 对象的方法:Count
 
 

WshShortcut对象

WshShortcut 对象允许您使用脚本创建快捷方式。
 
1、WshShortcut对象的属性
WshShortcut 对象具有 8 个属性:
● Arguments
● Description
● FullName
● Hotkey
● IconLocation
● TargetPath
● WindowStyle
● WorkingDirectory
 
1.Arguments
Arguments 属性包含 WshArguments 对象(一个参数集合)。从该集合中获取单个参数值时,使用由 0 开始的索引。
 
2.Description
Description 属性返回快捷方式的描述信息。
object.Description1
  • Object:WshShortcut 对象。
Description 属性包含一个描述快捷方式的字符串值。
 
3.FullName
FullName 属性返回快捷方式对象目标的有效完整路径。
object.FullName
  • Object:WshShortcut 对象。
FullName 属性包含一个只读字符串,给出了快捷方式目标的有效完整路径。
 
4.HotKey
HetKey 属性用于给快捷方式指定一个热键,或识别快捷方式的热键。一个快捷方式的热键是指一些按键的组合,当同时按下这些按键时,就会启动该快捷方式。
object.Hotkey = strHotkey
  • Object:WshShortcut 对象。
  • strHotkey:一个字符串,表示指定给快捷方式的热键。
  • 下面是 strHotkey 的语法:
  • [KeyModifier]KeyName
  • KeyModifier:KeyModifier 可以是这些键之一:Alt+、Ctrl+、Shift+、Ext+。Ext+指的是“扩展键”。这个键的加入是为了将来可能会在字符集中加入一类新的 Shift 键。KeyName- a ... z, 0 ... 9, F1 ... F12, ...
  • KeyName 是大小写不敏感的。
 
5.IconLocation
IconLocation 属性用于给快捷方式指定一个图标,或识别快捷方式的图标。
object.IconLocation = strIconLocation
  • Object:WshShortcut 对象。
  • strIconLocation:一个字符串,指定要使用的图标。该字符串应该包含图标的一个有效的完整路径,以及该图标所关联的一个索引。如果有多个图标,可以使用索引选择其中的一个。索引起始于 0。
 
6.TargetPath
TargetPath 属性给出了快捷方式执行文件的路径。
object.TargetPath
  • Object:WshShortcut 或 WshUrlShortcut 对象。
这个属性只用于快捷方式的目标路径,其他所有的参数必须放在 Argument 的属性中。
 
7.WindowsStyle
Windowstyle 属性用于指定快捷方式的窗口类型,或识别快捷方式所使用的窗口类型。
object.WindowStyle = intWindowStyle
  • Object:WshShortcut 对象。
  • intWindowStyle:设置程序执行窗口的类型。
WindowStyle 属性返回一个整数。
intWindowStyle 的可用值:
intWindowStyle
描 述
1
激活并显示一个窗口
如果该窗口处于最小化或最大化状态,系统将恢复其原始尺寸
如果是初次显示该窗口,应用程序就应该指定这个标志
2
激活并以最大化状态显示窗口
3
以最小化形式显示窗口
活跃的窗口将继续保持活跃
 
8.WorkingDirectory
WorkingDirectory 属性用于指定快捷方式的工作目录,或识别快捷方式所使用的工作目录。
object.WorkingDirectory = strWorkingDirectory
  • Object:WshShortcut 对象。
  • strWorkingDirectory:一个字符串,表示快捷方式的起始目录。
 
2、WshShortcut对象的方法
WshShortcut 对象具有一个方法:
● Save
Save 方法将一个快捷方式保存到磁盘。
object.Save
  • Object:WshShortcut 或 WshUrlShortcut 对象。
使用 CreateShortcut 方法创建一个快捷方式并设置该快捷方式对象的属性后,可以使用Save 方法将该快捷方式对象保存到硬盘上。Save 方法使用快捷方式对象的 FullName 属性中的信息确定在硬盘上保存快捷方式对象的位置。
只能对系统对象创建快捷方式—— 文件、目录和磁盘驱动器。不能为打印机或调度任务创建快捷方式。
set WshShell = WScript.CreateObject("WScript.Shell")
strDesktop = WshShell.SpecialFolders("Desktop")
set oShellLink = WshShell.CreateShortcut(strDesktop & "\ShortcutScript.lnk")
oShellLink.TargetPath = WScript.ScriptFullName
oShellLink.WindowStyle = 1
oShellLink.Hotkey = "CTRL+SHIFT+N"
oShellLink.IconLocation = "notepad.exe, 0"
oShellLink.Description = "Shortcut Script"
oShellLink.WorkingDirectory = strDesktop
oShellLink.Save
WScript.Echo oShellLink.FullName
 
 

WshUrlShortcut对象

WshUrlShortcut 对象允许您使用脚本创建到 Internet 资源的快捷方式。该对象是 WshShell 对象的子对象。必须使用 WshShell 方法的 CreateShortcut 来创建 WshUrlShortcut 对象。下面的代码可以保存为一个后缀名为.wsf 的 Windows 脚本文件。
<package>
<job id="vbs">
<script language="VBScript">
set WshShell = WScript.CreateObject("WScript.Shell")
strDesktop = WshShell.SpecialFolders("Desktop")
set oUrlLink = WshShell.CreateShortcut(strDesktop & "\百度.url")
oUrlLink.TargetPath = "http://www.baidu.com"
oUrlLink.Save
WScript.Echo oUrlLink.FullName
</script>
</job>
</package>
 
1、WshUrlShortcut对象的属性
WshUrlShortcut 对象具有两个属性:
● FullName
● TargetPath
 
1.FullName
FullName 属性返回快捷方式对象目标的有效完整路径。
object.FullName
  • Object:WshUrlShortcut 对象。
FullName 属性包含一个只读的字符串,给出快捷方式目标的有效的完整路径。
 
2.TargetPath
TargetPath 属性给出了快捷方式可执行文件的路径。
object.TargetPath
  • Object:WshUrlShortcut 对象。
这个属性只用于快捷方式的目标路径,其他所有的参数必须放在 Argument 的属性中。
 
2、WshUrlShortcut对象的方法
WshUrlShortcut 对象具有一个方法:
● Save
Save 方法将快捷方式对象保存到磁盘。
object.Save
  • Object:WshUrlShortcut 对象。
使用 CreateShortcut 方法创建一个快捷方式并设置该快捷方式对象的属性后,可以使用Save 方法将该快捷方式对象保存的硬盘上。Save 方法使用快捷方式对象的 FullName 属性中的信息确定在硬盘上保存快捷方式对象的位置。
 

 

posted @ 2021-06-24 13:51  Ulysses~  阅读(1276)  评论(0编辑  收藏  举报