VBS打開選擇文件對(duì)話框代碼(Win7)
更新時(shí)間:2011年10月27日 10:50:43 作者:
如何在 Windows 7 系統(tǒng)中向用戶顯示一個(gè)用來(lái)選擇文件的對(duì)話框呢
相信很多人都看過(guò)“嗨,Scripting Guy!”上面的一個(gè)問(wèn)題,就算沒(méi)有看過(guò)原文,也應(yīng)該看過(guò)被復(fù)制粘貼后的代碼。
我如何向用戶顯示一個(gè)用來(lái)選擇文件的對(duì)話框?
問(wèn):嗨,Scripting Guy!有沒(méi)有什么方法可以讓我使用腳本向用戶顯示一個(gè)對(duì)話框,供用戶選擇文件使用? — BF
答:您好,BF。如果您使用的是 Windows 2000,我們不知道實(shí)現(xiàn)此操作的方法,至少操作系統(tǒng)中沒(méi)有內(nèi)置這樣的方法。但如果您使用的是 Windows XP,情況就不同了。在 Windows XP 上,您可以使用“UserAccounts.CommonDialog”對(duì)象向用戶顯示一個(gè)標(biāo)準(zhǔn)的“文件打開”對(duì)話框??梢杂妙愃埔韵麓a的腳本:
代碼我就不復(fù)制粘貼了,原文里面有,網(wǎng)上也到處都是。但是問(wèn)題在于,這段代碼只能用于 Windows XP 系統(tǒng)(Windows 2003 或許也可以,但是我沒(méi)有測(cè)試過(guò)),而現(xiàn)在 Windows 7 已經(jīng)逐漸開始流行起來(lái)。在 Vista 和Windows 7 系統(tǒng)中默認(rèn)是不自帶 UserAccounts.CommonDialog 組件的(順便提一句,SAFRCFileDlg.FileOpen 和 SAFRCFileDlg.FileSave 組件也是沒(méi)有的)。
那么如何在 Windows 7 系統(tǒng)中向用戶顯示一個(gè)用來(lái)選擇文件的對(duì)話框呢?答案是 html 中的文件選擇對(duì)話框:
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
我如何向用戶顯示一個(gè)用來(lái)選擇文件的對(duì)話框?
問(wèn):嗨,Scripting Guy!有沒(méi)有什么方法可以讓我使用腳本向用戶顯示一個(gè)對(duì)話框,供用戶選擇文件使用? — BF
答:您好,BF。如果您使用的是 Windows 2000,我們不知道實(shí)現(xiàn)此操作的方法,至少操作系統(tǒng)中沒(méi)有內(nèi)置這樣的方法。但如果您使用的是 Windows XP,情況就不同了。在 Windows XP 上,您可以使用“UserAccounts.CommonDialog”對(duì)象向用戶顯示一個(gè)標(biāo)準(zhǔn)的“文件打開”對(duì)話框??梢杂妙愃埔韵麓a的腳本:
代碼我就不復(fù)制粘貼了,原文里面有,網(wǎng)上也到處都是。但是問(wèn)題在于,這段代碼只能用于 Windows XP 系統(tǒng)(Windows 2003 或許也可以,但是我沒(méi)有測(cè)試過(guò)),而現(xiàn)在 Windows 7 已經(jīng)逐漸開始流行起來(lái)。在 Vista 和Windows 7 系統(tǒng)中默認(rèn)是不自帶 UserAccounts.CommonDialog 組件的(順便提一句,SAFRCFileDlg.FileOpen 和 SAFRCFileDlg.FileSave 組件也是沒(méi)有的)。
那么如何在 Windows 7 系統(tǒng)中向用戶顯示一個(gè)用來(lái)選擇文件的對(duì)話框呢?答案是 html 中的文件選擇對(duì)話框:
復(fù)制代碼 代碼如下:
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
相關(guān)文章
math.vbs 自然數(shù)n的n次方的的和或積的級(jí)數(shù)
通項(xiàng)為自然數(shù)n的n次方的的和或積的級(jí)數(shù),求和或積的表達(dá)式。2009-09-09
網(wǎng)絡(luò)接口利用率監(jiān)控VBS腳本代碼(Windows)
監(jiān)測(cè)windows主機(jī)網(wǎng)絡(luò)接口利用率的vbs代碼,需要的朋友可以參考下。2011-12-12
vbs實(shí)現(xiàn)的支持拖動(dòng)的txt文本切割器
用vbs實(shí)現(xiàn)的txt文本文件切割器,默認(rèn)為8000個(gè)字符切為一個(gè)文件。支持拖動(dòng)。2008-06-06
使用vbscript生成36進(jìn)制自動(dòng)增長(zhǎng)序號(hào)的實(shí)現(xiàn)代碼
這篇文章主要介紹了使用vbscript生成36進(jìn)制自動(dòng)增長(zhǎng)序號(hào)的實(shí)現(xiàn)代碼,本文代碼也可以在ASP中使用,需要的朋友可以參考下2014-08-08
vbscript基礎(chǔ)篇 - vbs數(shù)組Array的定義與使用方法
這篇文章主要介紹了vbscript基礎(chǔ)篇 - vbs數(shù)組Array的定義與使用方法,需要的朋友可以參考下2018-05-05
利用vbscript腳本修改文件內(nèi)容,此適用于自動(dòng)化的操作中
利用vbscript腳本修改文件內(nèi)容,此適用于自動(dòng)化的操作中...2006-12-12

