• qtp:vbs基础教程


    ◎Vbs脚本编程简明教程之中的一个—为什么要使用Vbs? 
    在Windows中,学习计算机操作或许非常easy,可是非常多计算机工作是反复性劳动,比如你每周或许须要对一些计算机文件进行复制、粘贴、改名、删除。或许你每天启动计算机第一件事情就是打开WORD,切换到你喜爱的输入法进行文本编辑,同一时候还要播放优美的音乐给工作创造一个舒心的环境。当然也有可能你常常须要对文本中的某些数据进行整理,把各式各样的数据依照某种规则排列起来……。这些事情反复、琐碎,使人easy疲劳。

    第三方软件或许能够强化计算机的某些功能,可是解决这些反复劳动往往事倍功半。我也尝试过使用计算机语言编敲代码来解决这些问题,可是随之而来的命令、语法、算法、系统框架和类库经常让我认为这样是否有必要。难道就是由于猪毛比較难拔,所以我就要去学习机械,为自己设计一个拔猪毛机(?)吗?

    Vbs是一种Windows脚本,它的全称是:Microsoft Visual Basic Script Editon.(微软公司可视化BASIC脚本版),VBS是Visual Basic的的一个抽象子集。是系统内置的,用它编写的脚本代码不能编译成二进制文件。直接由Windows系统运行(实际是一个叫做宿主host的解释源码并运行),高效、易学,可是大部分高级语言能干的事情,它基本上都具备,它能够使各种各样的任务自己主动化,能够使你从反复琐碎的工作中解脱出来,极大的提高工作效率。

    我个人觉得Vbs脚本事实上就是一种计算机编程语言,可是因为缺少计算机程序设计语言中的部分要素。对于事件的描写叙述能力较弱,所以称为脚本。它最方便的地方就是提供了对COM对象的简便支持。那么什么是COM对象呢?

    我这样理解,COM对象就是一些具有特定函数功能项程序模块,他们一般以ocx或者dll作为扩展名,你仅仅要找到包括有你须要的功能的模块文件。并在脚本中规范的引用。就能够实现特定的功能。也就是说Vbs脚本就是调用现成的“控件”作为对象。用对象的属性和方法实现目的。全然免去了编写代码、设计算法等等麻烦。说白了,我不是认为拔猪毛麻烦么?我发觉xx机(比方真空离心器)有一个功能能够实现脱毛,ok。我把它拿来给猪脱毛。

    什么?大材小用?太浪费资源了?天哪,那是计算机芯片的事情,死道友不死贫道,反正我的事情是方便高速的攻克了,这即可了。

    最方便的是它甚至不须要专门的开发环境。在你的计算机中。仅仅要有notepad,就能够编写Vbs脚本了,而且能够直接运行。


    ◎Vbs脚本编程简明教程之二—怎样開始第一个Vbs脚本?

    就像多数计算机教程一样 ,我们从“Hello World!

    ”程序開始我们的练习。

    什么?不知道是什么意思?就是说大部分的计算机程序设计教程开篇入门都是编写一个小程序,运行这个程序的结果就是在计算机的屏幕上或者dos窗体中显示一行文字:Hello World!

    好了,我们開始吧。

    打开你的“记事本”程序。在编辑窗体填写:

    msgbox "Hello World!"

    然后用鼠标单击“文件”菜单。单击“保存”。把“保存在”一栏设为桌面。在“文件名称”一栏中填写kk.vbs,单击“保存”就能够了。

    然后最小化“记事本”窗体,在桌面上寻找你刚刚保存的kk.vbs,然后双击。

    看到弹出的对话框了没有。单击“确定”。对话框消失了。难看了点,只是确实是你编写的第一个脚本程序。

    说明之中的一个:上面的操作中,保存位置放在桌面,仅仅是为了运行方便,你保存到其它的地方全然没有问题,仅仅要你知道你保存在什么地方就能够了。什么?是废话,自己保存的当然知道保存在那里了。不,自己保存的文件自己找不到的人我见的多了去了。

    文件名称你能够任意填写。不一定非要写kk,仅仅要符合Windows的文件命名规则就能够了。可是扩展名必须是vbs。什么?不知道什么是扩展名?就是文件名称中“.”后的那部分。简单说,就是vbs脚本文件命名时必须是:xxx.vbs,当中xxx你任意。

    说明之二:在记事本编辑窗体中写的这行是什么意思?

    Msgbox是VBS内建的函数。每个函数都能够完毕一定的功能,你仅仅须要依照语法要求,在函数的对应部分填写对应的内容就能够了,这部分内容我们称为參数,当然函数运行的结果我们称为返回值,一个函数能够有返回值也能够没有,能够有參数也能够没有。你不用了解函数是怎么运作的,仅仅要了解这个函数能干什么即可了。

    Msgbox语法:msgbox "对话框内容", , "对话框的标题"

    你最好还是用记事本打开刚才的文件在编辑窗体中输入:

    msgbox "Hello World!" , , "系统提示"

    运行一下。看看效果和位置。

    说明之三:假设运行失败。看看你的标点符号。全部的标点符号必须是在英文状态下输入的。

    当然,这个脚本实在是太简单了。甚至连最简单的交互都没有。所以你能够把脚本这样改动一下:

    Dim name

    name=Inputbox("请输入你的名字:","名称")

    Msgbox name, , "您的名字是"

    保存运行一下。看到弹出的对话框了么?填入你的名字。点确定,看到结果了吗?

    说明之中的一个:第一句是定义变量,dim是定义变量的语句

    其格式为:dim 变量1,变量2……。

    Vbs仅仅有一种变量类型,所以不用声明变量类型。

    系统会自己主动分辨变量类型。

    说明之二:inputbox是VBS内建的函数,能够接受输入的内容。其语法格式为:

    Inputbox("对话框内容","对话框标题")

    第二句的意思是接受用户的输入,并把输入结果传递给变量name。

    好了,到此脚本主要的输入输出函数都有了,已经能够完毕一些比較简单的功能了。你能够编写一个简单的脚本,然后拷贝的“程序”—>“启动”中。然后又一次启动计算机看看结果。

    ◎Vbs脚本编程简明教程之三—Vbs的基本的语法(牢记) 
    VBScript
    基础知识

    一、变量

    1、全部单引號后面的内容都被解释为凝视。

    2、在VBScript中,变量的命名规则遵循标准的命名规则,须要注意的是:在VBScript中对变量、方法、函数和对象的引用是不区分大写和小写的。

    在申明变量时。要显式地申明一个变量,须要使用keywordDIm来告诉VBScript你要创建一个变量。并将变量名称跟在其后。申明多个同类型变量,能够用逗号分隔。

    注意:VBScript中不同意在申明变量的时候同一时候给变量赋值。可是同意在一行代码内同一时候对两个变量进行赋值,中间用冒号分隔。

    3、你能够使用OptionExplicit来告诉宿主变量必须先声明后使用。

    4、VBScript在定义时仅仅有一种变量类型,在实际使用中须要使用类型转换函数来将变量转换成对应的变量类型。

    Cbool函数将变量转换成布尔值;

    Cbyte函数将变量转换为0到255之间的整数。

    Ccur函数、Cdbl函数和Csng函数将变量转换为浮点数值,前者仅仅精确到小数点后四位,后两者要更加精确。数值的范围也要大的多。

    Cdate函数将变量转换为日期值。

    Cint函数和Clng函数将变量转换为整数。后者的范围比前者要大的多。

    Cstr函数将变量转换为字符串。

    二、数组

    数组的定义与变量很类似,仅仅须要在变量后描写叙述这个数组的个数和维数。

    须要注意的是:数组的下标总是从0開始,而以数组定义中数值减一结束。也就是说你以要定义一个有十个数据的数组,将这样书写代码:dImarray(9),相同,当你要訪问第五个元素时,实际的代码是array(4)。当然,你能够通过不指定数组的个数和维数来申明动态数组。等到数组的个数和维数固定后。使用keywordredim来改变数组。

    注意,在改变数组的大小时,数组的数据会被破坏。使用keywordpreserve来保护数据。比如:

    RedIm空格preserve空格array括号个数逗号维数括号

    三、操作符

    在VBScript运算符中,加减乘除都是我们经常使用的符号,乘方使用的是 ^ ,取模使用的Mod。

    在比較操作符中,等于、小于、大于、小于等于、大于等于都与我们经常使用的符号是一致的,而不等于是小于和大于连用。

    逻辑运算符为:和操作—>AND     非操作—>NOT     或操作—>OR。

    你能够使用操作符 + 和操作符 & 来连接字符串。一般使用&操作符;

    另外另一个比較特殊的操作符Is用来比較对象,比如button对象,假设对象是同一类型,结果就是真。假设对象不是同一类型。结果就是假。

    四、条件语句主要有if……then语句和selectcase语句两种形式

    在if……then语句中。其基本形式为:

    If 条件 then

    处理条件的语句;

    ……

    Endif

    基本形式仅仅能对单个条件进行验证,假设有两个条件,则须要在基本形式中加入单行语句else。假设还有很多其它的条件须要验证,则须要加入语句

    Elseif 条件 then

    处理条件语句

    在selectcase语句中,其基本形式为:

    Select case 变量

    Case 条件值

    处理条件语句

    并对上两句进行反复

    最后一句应为

    case else

    处理语句

    当然不要忘记将条件结束语句End select放在最后一行

    注意:在运行字符串比較时,须要特别注意大写和小写,普通情况下。我们在比較前,使用lcase函数将字符串转换成小写,使用ucase函数将字符串转换成大写大写。

    五、循环控制语句

    循环控制语句有for……next循环、for……each循环、do……while循环、do……until循环、while循环五种形式。

    在使用循环控制语句前,首先要对循环条件进行推断,假设循环次数是有固定次数的,那么使用For……next循环。其结构为:

    For   计数器变量=開始计数值 to 最后计数值

    运行循环体

    Next

    假设是须要对数组或对象集合中的每个元素进行推断。则须要使用for……each循环,其结构为:

    For each 循环计数变量 in 要查看的对象或数组

    运行处理语句

    Next

    注意:在上述两种循环中随时能够使用exit for来退出循环

    假设你希望在条件满足时运行一段代码则使用do……while语句。结构为:

    Do while 条件

    运行循环体

    Loop

    假设你希望在条件不满足时运行代码,则使用do……until语句,结构为:

    Do until 条件

    运行循环体

    Loop

    当然,在这两种循环语句中,你能够使用exit do来退出循环

    最后一种循环语句是条件满足时一直运行循环,

    While 条件

    运行循环体

    Wend

    六、使用过程

    经常使用的过程有两种,一种为函数,给调用者返回值,一种为子程序,无返回值,另一种叫事件的特殊子程序,用的比較少。

    函数的基本定义方法为:

    Function 函数名称(參数列表)

    函数代码

    函数名称=某值 ‘用来返回值

    end function

    子程序一些都类似,只是没有返回值

    注意:虽然在定义子程序的时候,參数列表要加括号。但在调用子程序的时候,參数列表不加括号。括号仅仅在函数中使用。

    另外。子程序不能在表达式中使用。

    而函数仅仅能出如今赋值语句的右边。或者表达式中,函数不能直接使用。假设必须直接使用函数,则必须使用call语句调用,并取消返回值。

    ◎Vbs脚本编程简明教程之四—怎样利用Vbs执行外部程序? 
    Vbs
    仅仅提供了编程的一个基本框架,用户能够使用Vbs来定义变量、过程和函数,vbs也提供了一些内部函数和对象。可是Vbs没有提供不论什么命令来訪问Windows系统内部的部件,可是值得庆幸的是,Vbs尽管不能自己完毕这些任务,可是它提供了一条极为方便、功能也相当强的命令——CreateObject,这条命令能够訪问windows系统内安装的全部com对象,而且能够调用这些部件中存放的命令。

    于是问题攻克了,比方说,我手头有1000个小文本,我首先要对每个文本的语法进行查错和改动,然后依照预先定义好的规则对这些文本进行排序,最后将这些文本合并成为一个文件。正常情况下,我们须要把打开第一个小文本,然后把它拷贝到WORD中,然后利用里面的除错功能进行除错和改动,然后再导入到EXCEL中进行排序。将这个过程反复1000遍。然后再将全部得到的文本拷贝到一个大文本中。实在是太枯燥、工作量太大了。有了Vbs和CreateObject,问题得到解决,我仅仅须要找到对应的模块,调用对应的功能就能够了,作为脚本,把一个枯燥的过程反复1000次,本就是它的拿手好戏。

    好了,我们走入正题,从最简单的——仅仅启动一个程序開始。

    WSH也就是用来解析Vbs的宿主,本身包括了几个个经常使用对象:

    1、Scripting.FileSystemObject —> 提供一整套文件系统操作函数

    2、Scripting.Dictionary —> 用来返回存放键值对的字典对象

    3、Wscript.Shell —> 提供一套读取系统信息的函数。如读写注冊表、查找指定文件的路径、读取DOS环境变量,读取链接中的设置

    4、Wscript.NetWork —>

    提供网络连接和远程打印机管理的函数。(当中。全部Scripting对象都存放在SCRRUN.DLL文件里。全部的Wscript对象都存放在WSHOM.ocx文件里。)

    如今我们须要的是第三个对象,好了,让我们先连接一下对象看看,在记事本的编辑窗体中输入:

    Set objShell = CreateObject(“Wscript.Shell”)

    objShell.Run “notepad”

    相同,保存运行。那么看到了一个什么样的结果呢?在桌面上又打开了一个记事本。

    说明之中的一个:Set是Vbs指令,凡是将一对象引用赋给变量,就须要使用setkeyword。那么什么是对象引用呢?凡是字符串、数值、布尔值之外的变量都是对象引用。

    Objshell是变量名,能够任意改动。

    说明之二:反是正确引用的对象,其本身内置有函数和变量,其引用方法为在变量后加“. ”,后紧跟事实上现功能的函数就能够了。Objshell.run

    的意思就是调用Wscript.shell中的执行外部程序的函数——run。notepad是记事本程序的文件名称。当然你也能够改成“calc”,这是计算器的文件名称,winword是word的文件名称。等等吧。全部可执行文件的文件名称都能够。可是须要注意的是。假设你要执行的可执行文件存放的地方不是程序安装的经常使用路径,普通情况下。须要提供合法的路径名。可是run在执行解析时,遇到空格会停止,解决办法是使用双引號,比如:在我的机器上执行qq,代码为:

    objshell.run """C:Program FilesQQ2006QQ.exe""" ‘注:三个引號

    好。 我们再进一步。启动两个程序会怎样呢?

    输入例如以下代码:

    Set objShell = CreateObject(“Wscript.Shell”)

    objShell.Run “notepad”

    objShell.Run “calc”

    运行会怎样呢?两个程序基本上同一时候启动了。假设我们须要先启动notepad再启动calc将怎样呢?非常easy在须要顺序运行的代码后加 , , True參数就能够了。

    好了输入代码:

    Set objShell = CreateObject(“Wscript.Shell”)

    objShell.Run “notepad” ,,true

    objShell.Run “calc”

    看看运行的结果怎么样吧!

    总结:run函数有三个參数,第一个參数是你要执行的程序的路径。第二个程序是窗体的形式,0是在后台执行;1表示正常执行;2表示激活程序而且显示为最小化;3表示激活程序而且显示为最大化;一共同拥有10个这种參数我仅仅列出了4个最经常使用的。

    第三个參数是表示这个脚本是等待还是继续运行,假设设为了true,脚本就会等待调用的程序退出后再向后运行。

    事实上。run做为函数,前面另一个接受返回值的变量,一般来说假设返回为0,表示成功运行,假设不为0,则这个返回值就是错误代码。能够通过这个代码找出对应的错误。

    ◎Vbs脚本编程简明教程之五—错误处理 
    引发错误的原因有非常多。比如用户输入了错误类型的值,或者脚本找不到必需的文件、文件夹或者驱动器,我们能够使用循环技术来处理错误。可是VBS本身也提供了一些基本技术来进行错误的检測和处理。

    1、最常见的错误是执行时错误,也就是说错误在脚本正在执行的时候发生,是脚本试图进行非法操作的结果。比如零被作为除数。

    在vbs中。不论什么执行时错误都是致命的,此时,脚本将停止执行。并在屏幕上显示一个错误消息。

    你能够在脚本的开头加入

    On Error Resume Next

    这行语句能够告诉vbs在执行时跳过错误发生的语句。紧接着执行跟在它后面的语句。

    错误发生时。该语句将会把相关的错误号、错误描写叙述和相关源码压入错误堆栈。

    2、尽管On Error Resume

    Next语句能够防止vbs脚本在发生错误时停止执行,可是它并不能真正处理错误。要处理错误,你须要在脚本中添加一些语句,用来检查错误条件并在发生错误时处理它。

    vbscript提供了一个对象err对象,他有两个方法clear,raise。5个属性:description,helpcontext。helpfile,number。source

    err对象不用引用实例,能够直接使用。比如:

    on error resume next

    a=11

    b=0

    c=a/b

    if err.number<>0 then

    wscript.echo err.number & err.description & err.source

    end if


    ◎Vbs脚本编程简明教程之六—改动注冊表 
    Vbs
    中改动注冊表的语句主要有:

    1、读注冊表的关键词和值:

    能够通过把关键词的完整路径传递给wshshell对象的regread方法。比如:

    set ws=wscript.createobject("wscript.shell")

    v=ws.regread("HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun wiz")

    wscript.echo v

    2、写注冊表

    使用wshshell对象的regwrite方法。样例:

    path="HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun"

    set ws=wscript.createobject("wscript.shell")

    t=ws.regwrite(path & "jj","hello")

    这样就把

    HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunjj这个键值改成了hello.只是要注意:这个键值一定要预先存在。

    假设要创建一个新的关键词。相同也是用这种方法。

    path="HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion unsssa2000love"

    set ws=wscript.createobject("wscript.shell")

    val=ws.regwrite(path,"nenboy")

    val=ws.regread(path)

    wscript.echo val

    删除keyword和值

    使用regdelete方法。把完整的路径传递给regdelete就能够了

    比如

    val=ws.regdel(path)

    注意,假设要删除关键词的值的话 一定要在路径最后加上“”。假设不加斜线,就会删除整个关键词。

    当然。从如今的角度看。还是使用WMI的注冊表处理功能或许更好些。


    ◎windows
    的经常使用自己主动启动项 
    Windows启动时一般会有一大堆程序自己主动启动。不要以为管好了“開始→程序→启动”菜单就万事大吉,实际上,在Windows

    XP/2K中。常见的两个目录和八个注冊键都能够使程序实现自己主动启动。

    一、当前用户专有的启动目录:这是很多应用软件自己主动启动的经常使用位置。Windows自己主动启动放入该目录的全部快捷方式。用户启动目录一般在:Documents

    and Settings<username字>“開始”菜单程序启动。当中“<username字>”是当前登录的用户帐户名称。

    二、对全部用户有效的启动目录:这是寻找自己主动启动程序的第二个重要位置,无论用户用什么身份登录系统。放入该目录的快捷方式总是自己主动启动——这是它与用户专有的启动目录的差别所在。该目录一般在:Documents

    and SettingsAll Users“開始”菜单程序启动。

    三、Load注冊键:也可以自己主动启动程序。位置:HKEY_CURRENT_USERSoftwareMicrosoftWindowsNTCurrentVersionWindowsload。

    四、Userinit注冊键:位置:HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsNTCurrentVersionWinlogonUserinit。这里也可以使系统启动时自己主动初始化程序。

    通常该注冊键以下有一个userinit.exe,这个键同意指定用逗号分隔的多个程序,比如“userinit.exe,OSA.exe”(不含引號)。

    五、ExplorerRun注冊键:和load、Userinit不同。ExplorerRun键在HKEY_CURRENT_USER和HKEY_LOCAL_MACHINE下都有。详细位置是:HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPolicie***plorerRun,和HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPolicie***plorerRun。

    六、RunServicesOnce注冊键:RunServicesOnce注冊键用来启动服务程序,启动时间在用户登录之前,并且先于其它通过注冊键启动的程序。RunServicesOnce注冊键的位置是:HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunServicesOnce,和HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunServicesOnce。

    七、RunServices注冊键:RunServices注冊键指定的程序紧接RunServicesOnce指定的程序之后执行,但两者都在用户登录之前。

    RunServices的位置是:HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunServices。和HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunServices。

    八、RunOnceSetup注冊键:RunOnceSetup指定了用户登录之后执行的程序,它的位置是:HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunOnceSetup,和HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunOnceSetup。

    九、RunOnce注冊键:安装程序通经常使用RunOnce键自己主动执行程序,它的位置在HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunOnce和HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunOnce。HKEY_LOCAL_MACHINE以下的RunOnce键会在用户登录之后马上执行程序。执行时机在其它Run键指定的程序之前。HKEY_CURRENT_USER以下的RunOnce键在操作系统处理其它Run键以及“启动”目录的内容之后执行。假设是XP,你还须要检查一下HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunOnceEx。

    十、Run注冊键:Run是自己主动执行程序最经常使用的注冊键,位置在:HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun。和HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun。HKEY_CURRENT_USER以下的Run键紧接HKEY_LOCAL_MACHINE下


    ◎Vbs脚本编程简明教程之七—FSO的常见对象和方法 
    文件系统是全部操作系统最重要的部分之中的一个。脚本常常会须要对文件及目录进行訪问和管理,在Vbs中对桌面和文件系统进行訪问的顶级对象是FileSystemObject(FSO)。这个对象特别复杂。是vbs进行文件操作的核心。此节内容应了如指掌。

    FSO包括的常见对象有:

    Drive对象:包括储存设备的信息,包括硬盘、光驱、ram盘、网络驱动器

    Drives集合:提供一个物理和逻辑驱动器的列表

    File 对象:检查和处理文件

    Files 集合:提供一个目录中的文件列表

    Folder对象:检查和处理目录

    Folders集合:提供目录中子目录的列表

    Textstream对象:读写文本文件

    FSO的常见方法有:

    BulidPath:把文件路径信息加入到现有的文件路径上

    CopyFile:拷贝文件

    CopyFolder:复制目录

    CreateFolder:创建目录

    CreateTextFile:创建文本并返回一个TextStream对象

    DeleteFile:删除文件

    DeleteFolder:删除目录及当中全部内容

    DriveExits:确定驱动器是否存在

    FileExits:确定一个文件是否存在

    FolderExists:确定某目录是否存在

    GetAbsolutePathName:返回一个目录或文件的绝对路径

    GetBaseName:返回一个文件或目录的基本路径

    GetDrive:返回一个dreve对象

    GetDriveName:返回一个驱动器的名字

    GetExtensionName:返回扩展名

    GetFile:返回一个file对象

    GetFileName:返回目录中文件名

    GetFolder:返回一个目录对象

    GetParentFolderName:返回一个目录的父目录

    GetSpecialFolder:返回指向一个特殊目录的对象指针

    GetTempName:返回一个能够被createtextfile使用的随机产生的文件或目录的名称

    MoveFile:移动文件

    MoveFolder:移动目录

    OpenTextFile:打开一个存在的文件并返回一个TextStream对象


    ◎Vbs脚本编程简明教程之八—FSO中目录的基本操作 
    1
    、使用fso

    因为fso不是wsh的一部分,所以我们须要建立他的模型

    比如

    set fs=wscript.createobject(“scripting.filesystemobject”)

    样就建立了fso的模型。假设要释放的话也非常easy,

    set fs=nothing

    2、使用目录

    在创建前,我们一般须要检查该目录是否存在比如:

    dim fs,s //定义fs、s两个变量

    set fs=wscript.createobject(“scripting.filesystemobject”) //fs为FSO实例

    if (fs.folderexists(“c: emp”)) then //推断c: emp目录是否存在

    s=”is available”

    else

    s=”not exist”

    set foldr=fs.createfolder(“c: emp”) //不存在则建立

    end if

    拷贝:


    注意:假设c:data 和d:data都存在,脚本会出错,复制也就会停止,假设要强制覆盖,使用fs.copyfolder “c:data”

    “d:data”,true

    移动:

    set fs=wscript.createobject(“scripting.filesystemobject”)

    fs.movefolder “c:data” “d:data”

    我们能够使用统配符。来方便操作:

    比如, fs.movefolder :c:data e*” , “d:working”

    注意:在目的路径最后没有使用“” 也就是说我没有这样写:

    fs.movefolder c:data e*” , “d:working”

    这样写的话,假设d:working 文件夹不存在,windows就不会为我们自己主动创建这个文件夹。

    注意:上面我们所举的样例都是在利用fso提供的方法,假设使用folder对象也全然是能够的:

    set fs= wscript.createobject(“scripting.filesystemobject”)

    set f=fs.getfolder(“c:data”)

    f.delete //删除文件夹c:data。

    假设有子文件夹,也会被删除

    f.copy “d:working”,true    //复制到d:working

    f.move “d: emp”    //移动到d: emp

    一般指的就是系统目录:windowssystem32,

    暂时目录,windows目录,在前几篇的时候,我们提过一下:比如

    set fs=wscript.createobject(“scripting.filesystemobject”)

    set wshshell=wscript.createobject(“wscript.shell”)

    osdir=wshshell.expandenvironmentstrings(“%systemroot%”)

    set f =fs.getfolder(osdir)

    wscript.echo f

    这种方法使用3种值:

    表示windows目录。相关常量是windowsfolder

    系统目录。相关常量是systemfolder

    暂时文件夹,相关常量temporaryfolder

    比如:

    set fs=wscript.createobject(“scripting.filesystemobject”)

    set wfolder=fs.getspecialfolder(0) ‘返回windows文件夹

    set wfolder=fs.getspecialfolder(1) ‘返回system32

    set wfolder=fs.getspecialfolder(2)´返回暂时文件夹

    当然,还有简单的方法 那就是使用getspecialfolder() 3、特殊目录

    set fs=wscript.createobject(“scripting.filesystemobject”)

    fs.copyfolder “c:data” “d:data”


    set fs=wscript.createobject(“scripting.filesystemobject”)

    fs.deletefolder(“c:windows”)

    ◎Vbs脚本编程简明教程之九—妙用SendKeys简化反复操作 
    每次开机的时候,你想自己主动登陆你的QQ或者博客吗?巧妙使用VBS中的SendKeys命令(这个命令的作用就是模拟键盘操作,将一个或多个按键指令发送到指定Windows窗体来控制应用程序执行),能够极大的方便我们的经常使用操作。

    其使用格式为:

    Object.SendKeys string当中:

    Object:为WshShell对象。即脚本的第一行为:

    Set WshShell=WScript.CreateObject("WScript.Shell")

    将Object替换为WshShell

    “string”:表示要发送的按键指令字符串。须要放在英文双引號中。它包括例如以下内容:

    1.基本键:一般来说。要发送的按键指令都能够直接用该按键字符本身来表示,比如要发送字母“x”,使用“WshShell.SendKeys

    "x"”就可以。

    当然,也可直接发送多个按键指令,仅仅须要将按键字符按顺序排列在一起就可以,比如,要发送按键“cfan”。能够使用

    “WshShell.SendKeys "cfan"”

    2.特殊功能键:对于须要与Shift、Ctrl、Alt三个控制键组合的按键,SendKeys使用特殊字符来表示:Shift — +;Ctrl   —   ^;Alt — %

    如要发送的组合按键是同一时候按下Ctrl+E。须要用WshShell.SendKeys

    "^e"”表示,假设要发送的组合按键是按住Ctrl键的同一时候按下E与C两个键,这时应使用小括号把字母键括起来,书写格式为“WshShell.SendKeys

    "^(ec)"”,这里要注意它与“WshShell.SendKeys

    "^ec"”的差别,后者表示组合按键是同一时候按住Ctrl和E键,然后松开Ctrl键。单独按下“C”字母键。

    因为“+”、“^”这些字符用来表示特殊的控制按键了,怎样表示这些按键呢?仅仅要用大括号括住这些字符就可以。比如,要发送加号“+”。可使用“WshShell.SendKeys

    "{+}"”。另外对于一些不会生成字符的控制功能按键,也相同须要使用大括号括起来按键的名称。比如要发送回车键,须要用“WshShell.SendKeys

    "{ENTER}"”表示。发送向下的方向键用

    “WshShell.SendKeys "{DOWN}"”表示。

    假设须要发送多个反复的单字母按键,不必反复输入该字母,SendKeys同意使用简化格式进行描写叙述。使用格式为“{按键

    数字}”。比如要发送10个字母“x”。则输入“WshShell.SendKeys "{x 10}"”就可以。

    例一:WshShell.SendKeys "^{ESC}u"

    代码的含义为:按下Ctrl+Esc组合键(相当于按Win键)打开“開始”菜单,接着按U键打开“关机”菜单。

    例二:让VBS脚本自己主动在记事本中输入一行文字“hello, welcome to cfan”。

    Dim WshShell

    Set WshShell=WScript.CreateObject("WScript.Shell")

    WshShell.Run "notepad"

    WScript.Sleep 2000  

    //本行的含义为是脚本暂停2秒,给notepad一个打开的时间,有时时间太短可能导致后面的字符无法进入编辑区

    WshShell.AppActivate "无标题 - 记事本

    "//AppActivate为寻找可运行程序的标题框,”无标题-记事本”内容你的自己打开看一下

    WshShell.SendKeys "hello, welcome to cfan"

    作业1:让脚本自己主动输入以下两段小短句

    This is the most wonderful day of my life

    because I´m here with you now

    作业2:让脚本在输入短句后自己主动关闭记事本,并保存文件名称为“test”,注意关闭记事本能够直接使用组合按键Alt+F4来实现。


    例三:制作能自己主动定时存盘的记事本

    我们最经常使用的记事本没有Word、WPS那样的自己主动定时存盘功能。事实上利用VBS脚本再加上SendKeys命令,就能弥补这个遗憾。

    打开记事本。输入下面内容(为easy描写叙述和分析,把代码分为四个部分):

    ´第一部分:定义变量和对象

    Dim WshShell, AutoSaveTime, TXTFileName

    AutoSaveTime=300000

    Set WshShell=WScript.CreateObject("WScript.Shell")

    TXTFileName=InputBox("请输入你要创建的文件名称(不能用中文和纯数字):")

    ´第二部分:打开并激活记事本

    WshShell.Run "notepad"

    WScript.Sleep 200

    WshShell.AppActivate "无标题 - 记事本"

    ´第三部分:用输入的文件名称存盘

    WshShell.SendKeys "^s"

    WScript.Sleep 300

    WshShell.SendKeys TXTFileName

    WScript.Sleep 300

    WshShell.SendKeys "%s"

    WScript.Sleep AutoSaveTime

    ´第四部分:自己主动定时存盘

    While WshShell.AppActivate (TXTFileName)=True

    WshShell.SendKeys "^s"

    WScript.Sleep AutoSaveTime

    Wend

    WScript.Quit

    将其保存为记事本.vbs,以后要使用记事本时。都通过双击这个脚本文件来打开。

    程序说明:这个脚本的基本思路是定时向记事本发送Ctrl+S这个存盘组合键。

    第一部分:定义了脚本中须要用到的变量和对象。“AutoSaveTime”变量用来设置自己主动存盘间隔。单位为毫秒,这里设置为5分钟。“TXTFileName”变量通过输入框取得你要创建的文本文件名。

    第二部分:执行记事本,对于Windows本身提供的程序,比方计算器等,可直接在“WshShell.Run”后输入程序名称。如"calc",对于非系统程序,则可输入全然路径,但要注意使用8.3格式输入,比方“"D:Progra~1TencentQQ.exe"”。

    第三部分:这里用SendKeys命令运行了这种操作流程(请注意每一个操作之间延时命令的使用):在记事本中按Ctrl+S组合键→弹出保存文件的窗体→输入文件名称→按Alt+S组合键进行保存(默认保存在“我的文档”文件夹)。

    第四部分:定时存盘的关键,通过“While……Wend”这个当条件为“真”时循环命令。实现自己主动存盘代码“WshShell.SendKeys

    "^s"”和定时代码“WScript.Sleep

    AutoSaveTime”的反复运行。由于不能让这个定时存盘循环一直运行。退出记事本后,必须自己主动退出脚本并结束循环,所以设计了一个循环推断条件“WshShell.AppActivate

    TXTFileName=True”。当记事本执行中时,能够激活记事本窗体。这个条件执行结果为“True”。定时存盘循环一直执行。退出记事本后,脚本无法激活记事本窗体,就会跳出循环。执行“Wend”后面的“WScript.Quit”退出脚本。

    例四:关机菜单立马显身

    打开记事本,输入下面命令,并将其保存为1.vbs:

    set WshShell = CreateObject("WScript.Shell")

    WshShell.SendKeys "^{ESC}u"

    双击执行它。你会发现关机菜单立马出现了。

    将“WshShell.SendKeys "^{ESC}u"”改为“WshShell.SendKeys "^+{ESC}"”,执行一下看看是否打开了任务管理器。


    让我们举个样例利用SendKeys自己主动上网并登陆博客

    将以下的脚本拷贝到一个文本文件里。并将其文件名称命名为:自己主动登陆.vbs,然后将拨号软件及本脚本一起拷贝到程序——启动项中,就能够实现自己主动拨号上网,并登陆到博客上。

    代码例如以下:

    Set wshshell=CreateObject("wscript.shell")

    wshshell.AppActivate "连接 MAE-301U 拨号连接"

    wscript.Sleep 20000

    wshshell.SendKeys "{enter}"

    wshshell.Run "iexplore"

    WScript.Sleep 2000

    wshshell.AppActivate "hao123网址之家---有用网址,搜索大全,尽在www.hao123.com - Microsoft

    Internet Explorer" ´引號中的内容改动为你的浏览器打开后标题栏中的内容

    wshshell.SendKeys "%d"

    wshshell.SendKeys "http://passport.baidu.com/?login"

    wshshell.SendKeys "{enter}"

    WScript.Sleep 2000

    wshshell.SendKeys "此处改动为博客帐号"

    wshshell.SendKeys "{tab}"

    wshshell.SendKeys "此处改动为博客password"

    wshshell.SendKeys "{enter}"

    ◎Vbs脚本编程简明教程之十 —— Vbs脚本编程经常使用的编辑器 
    Vbs
    脚本经常使用的编辑器当然是notapad。只是这个编辑器的功能当然实在是太弱了一点。事实上有非常多的专用的脚本编辑器能够大慷慨便vbs脚本的编写。

    我经常使用的有两种:

    1、VBSEDit汉化版

    2、primalscript汉化版,能够对30多种脚本进行编辑


    ◎Vbs脚本编程简明教程之十一 ——FSO中文件的基本操作 
    一、文件属性:

    在windows中,文件的属性一般用数字来表示:

    0代表normal。即普通文件未设置不论什么属性。

       1代表仅仅读文件。

    2代表隐藏文件。   4代表系统文件。   16代表文件夹或文件夹。

    32代表存档文件。 1024代表链接或快捷方式。比如:

    set fs=wscript.createobject(“scripting.filesystemobject”)

    set f=fs.getfile(“d:index.txt”)

    msgbox f.Attributes ‘attributes函数的作用是显示文件属性

    须要说明的是:msgbox显示的结果往往不是上面说明的数字。而是有关属性代表数字的和。

    二、创建文件:object.createtextfile方法,注意创建前一般须要检查文件是否存在。

    比如:set fso=wscript.createobject(“scripting.filesystemobject”)

    if fso.fileexists(“c:kk.txt”) then

    msgbox “文件已存在”

    else

    set f=fso.createtextfile(“c:kk.txt”)

    end if

    如须要强制覆盖已存在的文件,则在文件名称后加true參数。

    三、复制、移动、删除文件:使用copyfile方法、movefile方法、deletefile方法。比如:

    set fso=wscript.createobject(“scripting.filesystemobject”)

    fso.copyfile “c:kk.txt”,”d:1kk.txt”,true   //如上文说述,true代表强制覆盖

    fso.movefile “c:kk.txt”, “d:” //移动文件

    fso.deletefile “c:kk.txt” //删除文件

    四、文件的读写:

    1、打开文件:使用opentextfile方法

    如:set ts=fso.opentextfile(“c:kk.txt”,1,true)

    说明:第二个參数为訪问模式1为仅仅读、2写入、8为追加

    第三个參数指定如文件不存在则创建。

    2、读取文件:read(x)读x个字符;readline读一行。readall所有读取

    如:set ffile=fso.opentextfile(“c:kk.txt”,1,true)

    value=ffile.read(20)

    line=ffile.readline

    contents=ffile.readall

    3、常见的指针变量:

    atendofstream属性:当处于文件结尾的时候这个属性返回true。一般用循环检測是否到达文件末尾。比如:

    do while ffile.atendofstream<>true

    ffile.read(10)

    loop

    atendofline属性:假设已经到了行末尾。这个属性返回true。

    Column属性(当前字符位置的列号)和line属性(文件当前行号):在打开一个文件后。行和列指针都被设置为1。

    4、在文件里跳行:skip(x) 跳过x个字符。skipline 跳过一行

    5、在文件里写入字符:能够用2-写入和8-追加的方式来写入

    其方法有:write(x)写入x字符串。writeline(x)写入x代表的一行

    writeblanklines(n) 写入n个空行

    注意:最后一定要使用close方法关闭文件。读文件后一定要关闭,才干以写的方式打开。

    ◎Vbs脚本编程简明教程之十二—使用系统对话框 
    在VBS脚本设计中,假设能使用windows提供的系统对话框,能够简化脚本的使用难度。使脚本人性化很多。非常少有人使用,但VBS并不是不能实现这种功能,方法当然还是利用COM对象。

    1、SAFRCFileDlg.FileSave对象:属性有:FileName — 指定默认文件名称;FileType —

    指定文件扩展名。OpenFileSaveDlg — 显示文件保存框体方法。

    2、SAFRCFileDlg.FileOpen 对象:FileName — 默认文件名称属性。OpenFileOpenDlg — 显示打开文件框体方法。

    3、UserAccounts.CommonDialog对象:Filter — 扩展名属性("vbs File|*.vbs|All Files|*.*");

    FilterIndex — 指定

    InitialDir — 指定默认的目录

    FileName — 指定的文件名称

    Flags — 对话框的类型

    Showopen方法:

    非常easy,ok,让我们来举两个简单的样例:

    例一:保存文件

    Set objDialog = CreateObject("SAFRCFileDlg.FileSave")

    Set objFSO = CreateObject("Scripting.FileSystemObject")

    objDialog.FileName = "test"

    objDialog.FileType = ".txt"

    intReturn = objDialog.OpenFileSaveDlg

    If intReturn Then

    objFSO.CreateTextFile(objDialog.FileName & objdialog.filetype)

    Else

    Wscript.Quit

    End If

    注意:1、SAFRCFileDlg.FileSave对象不过提供了一个方便用户选择的界面,本身并没有保存文件的功能,保存文件还须要使用FSO对象来完毕。2、用FileType属性来指定默认的文件类型。3、在调用OpenFileSaveDlg方法时,最好把返回值保存到一变量中,用它能够推断用户按下的是确定还是取消。

    例二:.打开文件

    set objFile = CreateObject("SAFRCFileDlg.FileOpen")

    intRet = objFile.OpenFileOpenDlg

    if intret then

    msgbox “文件打开成功!

    文件名称为:” & objFile.filename

    else

    wscript.quit

    end if

    例三:比較复杂的打开文件对话框

    Set objDialog = CreateObject("UserAccounts.CommonDialog")

    objDialog.Filter = "vbs File|*.vbs"

    objDialog.InitialDir = "c:"

    tfile=objDialog.ShowOpen

    if tfile then

    strLoadFile = objDialog.FileName

    msgbox strLoadFile

    else

    wscript.quit

    end if

    说明:在脚本中增加 objDialog.Flags = &H020 看看会出现什么结果。


    ◎Vbs脚本编程简明教程之十三 —使用dictionary对象 
    VBS
    中存在一个特殊的对象-dictionnary,是一个集合对象。普通情况霞。我把这个特殊的集合想象为数组,能够使用当中内建的函数完毕存储和操纵数据等基本任务。无须操心数据是在哪些行列,而是使用唯一的键进行訪问或者是一个仅仅能执行在内存中的数据库,并仅仅有两个字段各自是:key和item,在使用中。字段key是索引字段。

    set sdict=CreateObject("Scripting.Dictionary")

    sdict.add "a","apple"

    sdict.add "b","banana"

    sdict.add "c","copy"

    for each key in sdict.keys

    msgbox     "键名" &   key     & "是" & " = " & sdict (key)

    next

    sdict.removeall

    这个脚本非常easy,就是定义了一个 dictionary 对象的实例sdict,并增加了三条数据,然后对每一条数据进行了枚举,最后,将对象的实例清空。

    Dictionary 对象的成员概要

    属性和说明

    CompareMode    设定或返回键的字符串比較模式

    Count     仅仅读。返回 Dictionary 里的键/条目对的数量

    Item(key) 设定或返回指定的键的条目值

    Key(key) 设定键值

    方法和说明

    Add(key,item) 添加键/条目对到 Dictionary

    Exists(key) 假设指定的键存在,返回 True,否则返回 False

    Items() 返回一个包括 Dictionary 对象中全部条目的数组

    Keys() 返回一个包括 Dictionary 对象中全部键的数组

    Remove(key) 删除一个指定的键/条目对

           RemoveAll()   删除所有键/条目对

    ◎Vbs脚本编程简明教程之十四—VBS内置函数 
    Abs 
    函数:返回数的绝对值。

    Array 函数:返回含有数组的变体。

    Asc 函数:返回字符串首字母的 ANSI 字符码。

    Atn 函数:返回数值的反正切。

    CBool 函数:返回已被转换为 Boolean 子类型的变体的表达式。

    CByte 函数:返回已被转换为字节子类型的变体的表达式。

    CCur 函数:返回已被转换为货币子类型的变体的表达式。

    CDate 函数:返回已被转换为日期子类型的变体的表达式。

    CDbl 函数:返回已被转换为双精度子类型的变体的表达式。

    Chr 函数:返回与指定的 ANSI 字符码相关的字符。

    CInt 函数:返回已被转换为整形子类型的变体的表达式。

    CLng 函数;返回已被转换为Long子类型的变体的表达式。

    Cos 函数:返回角度的余弦。

    CreateObject 函数:创建并返回对“自己主动”对象的引用。

    CSng 函数:返回已被转换为单精度子类型的变体的表达式。

    CStr 函数:返回已被转换为字符串子类型的变体的表达式。

    Date 函数:返回当前系统日期。

    DateAdd 函数:返回的日期已经加上了指定的时间间隔。

    DateDiff 函数:返回两个日期之间的间隔。

    DatePart 函数:返回给定日期的指定部分。

    DateSerial 函数:返回指定年月日的日期子类型的变体。

    DateValue 函数:返回日期子类型的变体。

    Day 函数:返回日期,取值范围为 1 至 31。

    Eval 函数:计算表达式并返回结果。

    Exp 函数:返回 e (自然对数的底) 的多少次方。

    Filter 函数:依据指定的筛选条件,返回含有字符串数组子集的、下限为 0 的数组。

    Fix 函数:返回数的整数部分。

    FormatCurrency 函数:返回的表达式为货币值格式,其货币符号採用系统控制面板中定义的。

    FormatDateTime 函数:返回的表达式为日期和时间格式。

    FormatNumber 函数:返回的表达式为数字格式。

    FormatPercent 函数:返回的表达式为百分数(乘以 100)格式,后面有 % 符号。

    GetObject 函数:返回从文件对“自己主动”对象的引用。

    GetRef 函数:返回对可以绑定到一事件的过程的引用。

    Hex 函数:返回一字符串。代表一个数的十六进制值。

    Hour 函数:返回表示钟点的数字,取值范围为 0 至 23。

    InputBox 函数:在对话框中显式一提示,等待用户输入文本或单击button,并返回文本框的内容。

    InStr 函数:返回一个字符串在还有一个字符串中首次出现的位置。

    InStrRev 函数。返回一个字符串在还有一个字符串中出现的位置,可是从字符串的尾部算起。

    Int 函数:返回数的整数部分。

    IsArray 函数:返回 Boolean 值。反映变量是否为数组。

    IsDate 函数:返回 Boolean 值,反映表达式是否能转换为日期。

    IsEmpty 函数:返回 Boolean 值,反映变量是否已被初始化。

    IsNull 函数:返回 Boolean 值,反映表达式是否含有无效数据(Null)。

    IsNumeric 函数:返回 Boolean 值。反映表达式是否能转换为数字。

    IsObject 函数:返回 Boolean 值,反映表达式是否引用了有效的“自己主动”对象。

    Join 函数:返回通过连接很多含有数组的子串而创建的字符串。

    LBound 函数。返回指定维数数组的最小有效下标。

    LCase 函数:返回的字符串已被转换为小写字母。

    Left 函数:返回字符串最左边的指定数量的字符。

    Len 函数:返回字符串中的字符数或存储变量所需的字节数。

    LoadPicture 函数:返回图片对象。

    仅仅用于 32 位平台。

    Log 函数:返回数的自然对数。

    LTrim 函数。返回去掉前导空格的字符串。

    Mid 函数:从字符串中返回指定数量的字符。

    Minute 函数:返回分钟数。取值范围为 0 至 59。

    Month 函数:返回表示月份的数。取值范围为 1 至 12。

    MonthName 函数:返回表示月份的字符串。

    MsgBox 函数:在对话框中显示消息,等待用户单击button。并返回表示用户所击button的数值。

    Now 函数:返回计算机的当前系统日期和时间。

    Oct 函数:返回表示该数八进制数值的字符串。

    Replace 函数:返回一字符串,当中指定的子串已被还有一个子串替换了规定的次数。

    RGB 函数:返回代表 RGB 颜色值的数字。

    Right 函数:返回字符串最右边的指定数量的字符。

    Rnd 函数:返回随机数。

    Round 函数:返回指定位数、四舍五入的数。

    RTrim 函数:返回去掉尾部空格的字符串副本。

    ScriptEngine 函数:返回反映使用中的脚本语言的字符串。

    ScriptEngineBuildVersion 函数:返回使用中的脚本引擎的编译版本。

    ScriptEngineMajorVersion 函数:返回使用中的脚本引擎的主版本。

    ScriptEngineMinorVersion 函数:返回使用中的脚本引擎的次版本。

    Second 函数:返回秒数,取值范围为 0 至 59。

    Sgn 函数:返回反映数的符号的整数。

    Sin 函数:返回角度的正弦值。

    Space 函数:返回由指定数量的空格组成的字符串。

    Split 函数:返回下限为 0 的、由指定数量的子串组成的一维数组。

    Sqr 函数:返回数的平方根。

    StrComp 函数:返回反映字符串比較结果的数值。

    String 函数:返回指定长度的反复字符串。

    StrReverse 函数:返回一字符串,当中字符的顺序与指定的字符串中的顺序相反。

    Tan 函数:返回角度的正切值。

    Time 函数:返回表示当前系统时间的“日期”子类型的“变体”。

    Timer 函数:返回时经子夜 12:00 AM 后的秒数。

    TimeSerial 函数:返回含有指定时分秒时间的日期子类型的变体。

    TimeValue 函数:返回含有时间的日期子类型的变体。

    Trim 函数:返回去掉前导空格或尾部空格的字符串副本。

    TypeName 函数:返回一字符串,它提供了关于变量的变体子类型信息。

    UBound 函数:返回指定维数数组的最大有效下标。

    UCase 函数:返回的字符串已经被转换为大写字母。

    VarType 函数:返回标识变体子类型的数值。

    Weekday 函数:返回表示星期几的数值。

    WeekdayName 函数:返回表示星期几的字符串。

    Year 函数:返回表示年份的数值。

    ◎Vbs脚本编程简明教程之十五——响应事件

    什么是事件?在我看来,事件就象我们手机上的闹钟。闹钟一响,我们就要去做某些特定的事情。或者这样说,事件就像警钟。当程序执行时,有特殊的事情发生。就会激发事件。事件本身就是一条消息。假设你编写的脚本要对事件进行处理。就须要一个特殊的过程或者函数来接受和处理事件。

    那么这个特殊的过程或者函数在程序执行时,就不断的监听,看系统是否传来了对应的事件,一旦接受到事件,脚本对此作出反应。

    那么事件是从那里来的呢?是否须要我们在脚本中对事件进行编写呢?普通情况下,事件是某个程序在执行中的特殊状态发出的。我们不须要对事件进行编写。仅仅须要编写处理事件的函数。

    比方说我们用vbs建立了ie的一个实例。那么当ie的窗体被关闭的时候。就会激发出一个叫做OnQuit的事件。

    是不是脚本自然而然就能接受事件并进行处理呢?我们说不是的,在创建对象的时候。我们将使用WSH的createobject命令,比如:

    Set objie=Wscript.createobject(“internetexplorer.application”,”event_”)

    注意到了吗?多了一个參数,这个參数的作用是什么呢?它叫做事件接收端,当脚本连接的对象包括事件时,假设对象调用的事件是OnBegin。那么WSH将会在脚本中调用一个event_OnBegin的事件处理程序。当然事件接受端并非固定的。假设对象将其定义为MyObj_的话。那么事件处理程序将是:MyObj_OnBegin。

    是否非常熟悉?在打造个性化QQ一讲中,以前出现过Window_OnSize(cx,cy)函数,它事实上就是一个事件处理程序。

    让我们来举个实际的样例完整的看看事件的处理过程:

    Set objie=WScript.CreateObject("InternetExplorer.Application","event_")

    objie.Visible=True

    MsgBox "请关闭浏览器窗体看看效果!

    ",vbSystemModal

    Wscript.sleep 6000

    MsgBox "如今已经正常关闭了"

    Sub event_onquit()

    MsgBox "您确定要关闭浏览器吗?",vbSystemModal

    End Sub

    这段脚本打开了一个IE窗体,然后要求你关闭IE窗体,当你关闭窗体的时候,自己主动调用事件响应程序。

    qtp測试:vbs对于文本的读写

    '读出文本全部内容
    Function ReadTxt(pathway)

    Dim fso,myfile,i
    'Dim ReadLine(10)
    Set fso=CreateObject("Scripting.FileSystemObject")
    If fso.FileExists(pathway) Then
       Set myfile=fso.OpenTextFile(pathway,1,False)
    Else
    WScript.Echo "
    该文档不存在"
    End If
    i=0
    If Not myfile.AtEndOfStream Then
       While Not myfile.AtEndOfLine
          'ReadLine(i)=myfile.ReadLine()
          'ReadLine=ReadLine&" "&myfile.ReadLine()'将全部行数据合在一起
           ReadLine=myfile.ReadAll()
       Wend

    Else
    ReadLine="
    文件内容为空"
    End If

    myfile.Close()
    WScript.Echo ReadLine
    End Function

    '逐行写入文本数据
    Function WriteTxt(pathway,content)
    Dim fso,myfile

    Set fso=CreateObject("Scripting.FileSystemObject")
    ON Error Resume Next 
    If Not fso.FileExists(pathway) Then
       fso.CreateTextFile(pathway)
    End If
    Set myfile=fso.OpenTextFile(pathway,8,True)
    myfile.WriteLine(content)
    myfile.Close()
    If Err.Number<>0 Then
    WScript.Echo Err.Number&Err.Description&" "&Err.Source
    End if
    End Function

    '调用读写函数
    Call WriteTxt("C:Documents and SettingsAdministrator桌面3.txt","hoho,写入数据測试")
    Call ReadTxt("C:Documents and SettingsAdministrator桌面3.txt")



  • 相关阅读:
    python基础总结二
    HTTP和HTTPS的区别
    通过HTTP请求响应过程了解HTTP协议
    稳定性测试+易用性测试
    容错测试点
    功能测试思考点
    功能测试-UI测试思考点
    字符编码-11
    字典+再识函数-8
    web API的概念
  • 原文地址:https://www.cnblogs.com/clnchanpin/p/7341145.html
Copyright © 2020-2023  润新知