—
本帖被 幻想. 执行取消锁定操作(2009-01-19)
—
VBScript有个函数MsgBox(),功能很强,但是在按键里面不能调用,通过对函数库stdlib.vbs的
分析和测试,发现可以修改实现MsgBox()的功能。
一、建立新函数PopBox()
不修改原函数,把下面的代码追加到stdlib.vbs后面。
function PopBox(Prompt,intSecond,strTitle,intButton,ByRef intReturn) '这个函数用来弹出一个对话框
dim obj
set obj = createobject("WScript.Shell")
intReturn=Cint(obj.Popup(Prompt,intSecond,strTitle,intButton))
end function
二、调用方式
调用方式和原MessageBox()近似,只是增加了参数数目
VBSCall Call PopBox(参数1:字符串,参数2:整数,参数3:字符串,参数4:正整数,返回值:整型变量)
三、参数详解
1)参数1(Prompt)
参数1可以字符串和字符串变量,显示在信息窗口,即原函数的显示内容。
2)参数2(intSecond)
参数为大于等于0的整数或该类型变量含义如下:
0表示一直等待用户选择
1和大于1的整数表示等待该时间(单位秒)以后窗口自动关闭,并返回-1
3)参数3(strTitle)
参数1可以字符串和字符串变量,弹出信息窗口的标题
4)参数4(intButton)
0和正整数或者该类型变量,显示按钮的数目和组合状态,该参数比较复杂如下:
第一组
0 只显示确定按钮。
1 显示确定和取消按钮。
2 显示终止、重试和忽略按钮。
3 显示是、否和取消按钮。
4 显示是和否按钮。
5 显示重试和取消按钮。
第二组
16 显示错误信息图标(X)。
32 显示警告查询图标(?)。
48 显示警告消息图标(!)。
64 显示信息消息图标(i)。
第三组
0 第一个按钮为默认按钮。
256 第二个按钮为默认按钮。
512 第三个按钮为默认按钮。
768 第四个按钮为默认按钮。
第四组
0 应用程序模式:用户必须响应消息框才能继续在当前应用程序中工作。
4096 系统模式:在用户响应消息框前,所有应用程序都被挂起。
第一组值用于描述对话框中显示的按钮类型与数目
第二组值用于描述图标的样式
第三组值用于确定默认按钮
第四组值则决定消息框的样式
将这些数字相加以生成 intButton 参数值时,只能从每组值中取用一个数字
5)参数5返回值(intReturn)
intreturn 为整型变量返回值为1到7的整数和-1,详细含义如下:
1 确定
2 取消
3 终止(放弃)
4 重试
5 忽略
6 是
7 否
-1 自动关闭
当返回值分别等于1到7的数值时,表示用户点击了相应的按钮,当返回值等于-1的时候是设置的
时间到,窗口自动关闭。
四、几个应用实例
1、弹出提示窗口,5秒钟内用户没有点击的时候自动关闭窗口,显示返回值
VBS dim ivar
VBSCall Call popbox("testing......",5,"测试窗口",0,ivar)
VBSCall Call MessageBox(ivar)
EndScript
2、弹出提示窗口,询问脚本走向,如果用户选择是则按提示走向运行,选择否则按默认走向,取消则
脚本终止
VBS dim ivar
VBSCall Call popbox("选择“是”运行子程序1,“否”运行子程序2,“取消”终止脚本",0,"请你选择走向",35,ivar)
Delay 100
IfExpression ivar=6
VBSCall Call MessageBox("你选择了“是”,现在运行的是子程序1")
EndIf
IfExpression ivar=7
VBSCall Call MessageBox("你选择了“否”,现在运行的是子程序2")
EndIf
IfExpression ivar=2
VBSCall Call MessageBox("你选择了“取消”,现在终止脚本")
EndIf
EndScript
3、弹出错误提示窗口,用户选择脚本终止/重试/忽略
VBS dim ivar
VBSCall Call popbox("发现错误,请你选择",0,"脚本错误信息",18,ivar)
Delay 100
IfExpression ivar=5
VBSCall Call MessageBox("你选择了“忽略”")
EndIf
IfExpression ivar=4
VBSCall Call MessageBox("你选择了“重试”")
EndIf
IfExpression ivar=3
VBSCall Call MessageBox("你选择了“终止”")
EndIf
EndScript
4、弹出窗口提示信息,直到点是才继续
VBS dim ivar
Rem question
VBSCall Call popbox("赞同使用正版按键精灵选择“是”,不赞同使用正版选择否“否”,只有选择“是”脚本才会继续运行",0,"请你选择",4,ivar)
Delay 100
IfExpression ivar6
Goto question
EndIf
VBSCall Call MessageBox("感谢你选用正版,现在脚本继续运行!")
EndScript