VBS学习笔记(九) 系统对话框

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 方法

例一:保存文件

Set objDialog = WScript.CreateObject("SAFRCFileDlg.FileSave")
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
objDialog.FileName = InputBox("文件名称:","文件名","Test")
objDialog.FileType = InputBox("文件类型:","类型",".txt")
intReturn = objDialog.OpenFileSaveDlg
If intReturn Then
	objFSO.CreateTextFile objDialog.FileName & objDialog.FileType,True,True
Else
	WScript.Quit
End If

注意:

1 、SAFRCFileDlg.FileSave 对象仅仅是提供了一个方便用户选择的界面,本身并没有保存文件的功能,保存文件还需要使用 FSO 对象来完成。

2、用 FileType 属性来指定默认的文件类型。

3、在调用 OpenFileSaveDlg 方法时,最好把返回值保存到一变量中,用它可以判断用户按下的是确定还是取消。

如果出现activex部件不能创建对象“safrcfiledlg.filesave”或者无法找到名为“safrcfiledlg.filesave”的automation的问题,可以尝试着下载safrcdlg.dll文件放到c:\windows\ststem32文件夹,然后点击“开始”“运行”,输入regsvr32 safrcdlg.dll,然后点击确定,再看看对象能不能创建。大部分应该是由于C:\windows\system32目录中不存在safrcdlg.dll造成的。(safrcdlg.dll下载地址

例二:. 打开文件

Set objDialog = WScript.CreateObject("SAFRCFileDlg.FileOpen")
intReturn = objDialog.OpenFileOpenDlg
WScript.Echo "文件名称:" & objDialog.FileName
WScript.Echo "文件大小:" & objDialog.FileSize & "字节"
If intReturn Then
	MsgBox "打开文件成功!文件名为:" & objDialog.FileName
Else
	WScript.Quit
End If


注意,这里的打开并非真正的将文件打开

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

Set objDialog = CreateObject("UserAccounts.CommonDialog")
objDialog.Filter = "vbs File(*.vbs)|*.vbs"
objDialog.InitialDir = "C:\"
'objDialog.Flags = &H020 '此语句加入后,对话框并没有出来
tfile = objDialog.ShowOpen
If tfile Then
	strLoadFile = objDialog.FileName
	MsgBox strLoadFile
Else 
	WScript.Quit
End if
PS:如果有加入那条语句出现别的情况,可以留言共同学习大笑一起进步嘛~
可能是因为win7系统中缺少某些组件、dll或者ocx,导致运行的时候就弹运行时错误,如下图:

网上的一些注册dll或者ocx的方法都试过了,还是没见可行,本人本本是win7,64位的,如果有弄成功的,还请告知,毕竟人多力量大嘛,哈哈~不过xp下还是没有问题的。如果想将InitialDir设成一些特殊的文件目录,譬如说我的电脑之类的,可以参见CLSID博客

因为不能运行,所以,我就在网上搜了下解决方案,同样也可以弹出对话框,代码(代码来自CSDN,链接)如下:

Set oIE = CreateObject("InternetExplorer.Application")
	oIE.Navigate "About:Blank"
	oIE.Document.Write "<HTML><BODY><INPUT TYPE='file' ID='x'/></BODY></HTML>"
Set oElement = oIE.Document.getElementById("x")
    oElement.Click
    WScript.Echo oElement.Value
WScript.Sleep 20000
	oIE.Quit

其实这段代码,本人也只是简单理解了下,由于是初学者,所以,按照以前的方法,先理解性记了下,希望在后面能有更深的理解,至于InternetExplorer.Application对象的Documen属性请参见博客

如果回显的全路径显示的是"C:\fakepath\"+文件名的形式”,这是ie8下的安全设置问题。

解决方案:

工具 -> Internet选项 -> 安全 -> 自定义级别 -> 找到“其他”中的“将本地文件上载至服务器时包含本地目录路径”,选中“启用”即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值