qtp:vbs基础教程

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:/1/kk.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方法:

很简单,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

这个脚本很简单,就是定义了一个 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 函数:在对话框中显式一提示,等待用户输入文本或单击按钮,并返回文本框的内容。

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 函数:在对话框中显示消息,等待用户单击按钮,并返回表示用户所击按钮的数值。

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窗口,当你关闭窗口的时候,自动调用事件响应程序。

你可能感兴趣的:(编程,filter,脚本,引擎,Dictionary,attributes)