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
我如何向用户显示一个用来选择文件的对话框?
问:嗨,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
上一篇: 用VBS实现的批量gb2312转utf-8,支持拖动
下一篇: 用vbs读取Excel文件的函数代码