VBS打開(kāi)選擇文件對(duì)話框代碼(Win7)
更新時(shí)間:2011年10月27日 10:50:43 作者:
如何在 Windows 7 系統(tǒng)中向用戶(hù)顯示一個(gè)用來(lái)選擇文件的對(duì)話框呢
相信很多人都看過(guò)“嗨,Scripting Guy!”上面的一個(gè)問(wèn)題,就算沒(méi)有看過(guò)原文,也應(yīng)該看過(guò)被復(fù)制粘貼后的代碼。
我如何向用戶(hù)顯示一個(gè)用來(lái)選擇文件的對(duì)話框?
問(wèn):嗨,Scripting Guy!有沒(méi)有什么方法可以讓我使用腳本向用戶(hù)顯示一個(gè)對(duì)話框,供用戶(hù)選擇文件使用? — BF
答:您好,BF。如果您使用的是 Windows 2000,我們不知道實(shí)現(xiàn)此操作的方法,至少操作系統(tǒng)中沒(méi)有內(nèi)置這樣的方法。但如果您使用的是 Windows XP,情況就不同了。在 Windows XP 上,您可以使用“UserAccounts.CommonDialog”對(duì)象向用戶(hù)顯示一個(gè)標(biāo)準(zhǔn)的“文件打開(kāi)”對(duì)話框??梢杂妙?lèi)似以下代碼的腳本:
代碼我就不復(fù)制粘貼了,原文里面有,網(wǎng)上也到處都是。但是問(wèn)題在于,這段代碼只能用于 Windows XP 系統(tǒng)(Windows 2003 或許也可以,但是我沒(méi)有測(cè)試過(guò)),而現(xiàn)在 Windows 7 已經(jīng)逐漸開(kāi)始流行起來(lái)。在 Vista 和Windows 7 系統(tǒng)中默認(rèn)是不自帶 UserAccounts.CommonDialog 組件的(順便提一句,SAFRCFileDlg.FileOpen 和 SAFRCFileDlg.FileSave 組件也是沒(méi)有的)。
那么如何在 Windows 7 系統(tǒng)中向用戶(hù)顯示一個(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
我如何向用戶(hù)顯示一個(gè)用來(lái)選擇文件的對(duì)話框?
問(wèn):嗨,Scripting Guy!有沒(méi)有什么方法可以讓我使用腳本向用戶(hù)顯示一個(gè)對(duì)話框,供用戶(hù)選擇文件使用? — BF
答:您好,BF。如果您使用的是 Windows 2000,我們不知道實(shí)現(xiàn)此操作的方法,至少操作系統(tǒng)中沒(méi)有內(nèi)置這樣的方法。但如果您使用的是 Windows XP,情況就不同了。在 Windows XP 上,您可以使用“UserAccounts.CommonDialog”對(duì)象向用戶(hù)顯示一個(gè)標(biāo)準(zhǔn)的“文件打開(kāi)”對(duì)話框??梢杂妙?lèi)似以下代碼的腳本:
代碼我就不復(fù)制粘貼了,原文里面有,網(wǎng)上也到處都是。但是問(wèn)題在于,這段代碼只能用于 Windows XP 系統(tǒng)(Windows 2003 或許也可以,但是我沒(méi)有測(cè)試過(guò)),而現(xiàn)在 Windows 7 已經(jīng)逐漸開(kāi)始流行起來(lái)。在 Vista 和Windows 7 系統(tǒng)中默認(rèn)是不自帶 UserAccounts.CommonDialog 組件的(順便提一句,SAFRCFileDlg.FileOpen 和 SAFRCFileDlg.FileSave 組件也是沒(méi)有的)。
那么如何在 Windows 7 系統(tǒng)中向用戶(hù)顯示一個(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)文章
windows.關(guān)于設(shè)置腳本的一些基本方法原則
windows.關(guān)于設(shè)置腳本的一些基本方法原則...2007-03-03用vbs將名稱(chēng)轉(zhuǎn)換為正確的大小寫(xiě)的代碼
用vbs將名稱(chēng)轉(zhuǎn)換為正確的大小寫(xiě)的代碼...2007-03-03ASP/VBScript中CHR(0)的由來(lái)以及帶來(lái)的安全問(wèn)題分析
CHR(0)是個(gè)特殊的字符,當(dāng)然在Visual Basic或者VBScript中可以直接用vbNullChar表示,從數(shù)值意義上來(lái)說(shuō)這個(gè)字符就是數(shù)字02012-01-01奇特的js寫(xiě)法,或許可以用來(lái)加密躲殺毒軟件什么的
今天晚上來(lái)搞js,發(fā)現(xiàn)一個(gè)奇怪的現(xiàn)象 先來(lái)看一個(gè)例子: 2000,(WScript.echo(0377),1000,20000)2008-12-12監(jiān)測(cè)windows主機(jī)網(wǎng)絡(luò)接口利用率的vbs代碼
這篇文章主要介紹了監(jiān)測(cè)windows主機(jī)網(wǎng)絡(luò)接口利用率的vbs代碼,不用任何軟件沒(méi)有安全隱患,學(xué)習(xí)vbs的朋友可以參考一下2019-10-10VBS教程:函數(shù)-DateSerial 函數(shù)
VBS教程:函數(shù)-DateSerial 函數(shù)...2006-11-11