2024年4月28日发(作者:)

13. 从Script中控制Windows和应用程序

Microsoft Windows Script Host(WSH)2提供了一些用来控制Script的新功能,例如:延迟Script的方

法、仿真传送给应用程序的按键动作(keystroke),以及在应用程序之间切换等等。在本章中,您将学会

如何使用这些方法来自动化一般的工作以及在登入期间设定您自己的环境。本章也将告诉您如何在

Windows 2000中新增登录脚本(script),以及看到Windows 2000用来在启动、关机、登入和注销期间执

行Script的新功能。

延迟Script的执行

要暂停或延迟Script叙述的执行,您可以使用我们在前面章节中已经使用过的 Sleep 方法。

使用 Sleep 方法来减轻CPU的负担

有时候您必须同步处理Script和另一个程序。举例来说,在第11章中您看到了Windows 98网域登录脚

本试着读取 UserName 属性的解决方案。当这个属性传回空的值时,Script必须等待直到此属性有值为止。下

面的程序代码解决了这个问题:

Set WshNetwork = Object("k")

User = "" ' 初始化

Do While User = "" ' 重复直到使用者名称被传回为止

200 ' 暂停以便减低CPU负担

User = me ' 读取属性

Loop

这个Script使用循环来取得 me 属性直到传回的值不是空的为止。您在第9章便看过

类似的技巧了(Script需要等待直到使用者透过按下

确定

钮来确认

Microsoft Internet Explorer

窗体的输

入)。我们可以使用下面的程序代码来轮询(poll)窗体的状态:

Do ' 等待直到【确定】钮被按下了

200 ' 暂停200微秒

Loop While (al() = 0)

第3个VBScript叙述会呼叫 CheckVal 方法以便决定

Internet Explorer

的内部状态。如果用户按下窗体

确定

,那么 CheckVal 便会传回1而且循环也将结束。轮询有个很大的缺点:他可能会占据CPU百分之

百的资源。因此,我加入这个叙述到循环中:

200 ' 暂停200微秒

这个叙述会呼叫 WScript 对象的 Sleep 方法。传递给此方法的参数用来指定Script的执行要被暂停多久

(单位是微秒,即千分之一秒)。循环每次执行时,Sleep 都会暂停Script的执行达200微秒的时间。在这段

周期内,Script都不会使用到CPU的资源。

在轮询中使用 Sleep 方法的结果如图13-1所示。在Windows 2000的

Windows

页中,

CPU

任务管理器

效能

标签

使用历程记录

曲线图显示的是两个Script使用的CPU负担(从窗体范例中取得的)。不含

叙述的 Do While 循环的执行会占据CPU百分之百的负担直到使用者按下

确定

为止,如图13-

1的左边记录所示。这张图也显示了如果Script使用 叙述所占用的CPU负担,如图13-1的右边

记录所示。改善后的Script并不会造成太多的CPU负担。这段时间周期内一开始所看到的小起伏是由鼠标点

按以启动这个Script,并加载窗体到

Internet Explorer

中,以及Script中轮询 直到浏览器完成加载窗

体为止的循环所造成。

图13-1 在轮询期间的处理器使用情形

说明

工作管理者

来监视CPU使用历程记录。而在

Windows 95和Windows 98中,您可以使用

系统监视器

(在Windows NT和Windows 2000中也有)。

您可以在Windows NT或Windows 2000中使用

Windows

使用延迟来解决异步处理的问题