欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

VBS打开选择文件对话框代码(Win7)

程序员文章站 2022-07-04 20:33:42
相信很多人都看过“嗨,scripting guy!”上面的一个问题,就算没有看过原文,也应该看过被复制粘贴后的代码。 我如何向用户显示一个用来选择文件的对话框? 问:嗨,s...
相信很多人都看过“嗨,scripting guy!”上面的一个问题,就算没有看过原文,也应该看过被复制粘贴后的代码。

我如何向用户显示一个用来选择文件的对话框?

问:嗨,scripting guy!有没有什么方法可以让我使用脚本向用户显示一个对话框,供用户选择文件使用? — bf

答:您好,bf。如果您使用的是 windows 2000,我们不知道实现此操作的方法,至少操作系统中没有内置这样的方法。但如果您使用的是 windows xp,情况就不同了。在 windows xp 上,您可以使用“useraccounts.commondialog”对象向用户显示一个标准的“文件打开”对话框。可以用类似以下代码的脚本:


代码我就不复制粘贴了,原文里面有,网上也到处都是。但是问题在于,这段代码只能用于 windows xp 系统(windows 2003 或许也可以,但是我没有测试过),而现在 windows 7 已经逐渐开始流行起来。在 vista 和windows 7 系统中默认是不自带 useraccounts.commondialog 组件的(顺便提一句,safrcfiledlg.fileopen 和 safrcfiledlg.filesave 组件也是没有的)。

那么如何在 windows 7 系统中向用户显示一个用来选择文件的对话框呢?答案是 html 中的文件选择对话框:
复制代码 代码如下:

function browseforfile()
dim shell : set shell = createobject("wscript.shell")
dim fso : set fso = createobject("scripting.filesystemobject")

dim tempfolder : set tempfolder = fso.getspecialfolder(2)
dim tempname : tempname = fso.gettempname()
dim tempfile : set tempfile = tempfolder.createtextfile(tempname & ".hta")

tempfile.write _
"<html>" & _
"<head>" & _

"<title>browse</title>" & _
"</head>" & _
"<body>" & _

"<input type='file' id='f' />" & _
"<script type='text/javascript'>" & _
"var f = document.getelementbyid('f');" & _

"f.click();" & _
"var shell = new activexobject('wscript.shell');" & _
"shell.regwrite('hkey_current_user\\volatile environment\\msgresp', f.value);" & _
"window.close();" & _

"</script>" & _
"</body>" & _
"</html>"

tempfile.close
shell.run tempfolder & "\" & tempname & ".hta", 0, true
browseforfile = shell.regread("hkey_current_user\volatile environment\msgresp")

shell.regdelete "hkey_current_user\volatile environment\msgresp"
end function

'author: demon
'website: http://demon.tw
'date: 2011/6/2

path = browseforfile()
if path <> "" then wscript.echo path
 
原文:http://demon.tw/programming/vbs-open-file-dialog.html