亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > VBScript > 正文

VBS 顯示“選擇文件或文件夾”對話框的代碼

2020-06-26 18:26:56
字體:
來源:轉載
供稿:網友
VBS 顯示“選擇文件或文件夾”對話框的代碼,經測試windows xp下才可以使用,win2000,win2003沒有內置這樣的方法。
 

一、顯示“選擇文件”的對話框

問: 嗨,Scripting Guy!有沒有什么方法可以讓我使用腳本向用戶顯示一個對話框,供用戶選擇文件使用?

答:您好。|
  如果您使用的是 Windows 2000,我們不知道實現此操作的方法,至少操作系統中沒有內置這樣的方法。
  但如果您使用的是 Windows XP,情況就不同了。在 Windows XP 上,您可以使用"UserAccounts.CommonDialog” 對象向用戶顯示一個標準的“文件打開”對話框。

      可以用類似以下代碼的腳本:

 

復制代碼代碼如下:

Set objDialog = CreateObject("UserAccounts.CommonDialog") 

objDialog.Filter = "All Files|*.*" 
objDialog.InitialDir = "C:/" 
intResult = objDialog.ShowOpen 
If intResult = 0 Then 
Wscript.Quit 
Else 
Wscript.Echo objDialog.FileName 
End If

      這是一個小腳本,所以讓我們逐行進行解釋吧:

 

1)我們首先創建一個對 UserAccounts.CommonDialog 對象的對象引用(名為“objDialog”)。

2)接著,我們設置對話框的“篩選”屬性。我們要顯示所有文件,所以我們將篩選設置成這樣:
          objDialog.Filter = "All Files|*.*"

     假如我們只想顯示文本文件,那該怎么辦?在這種情況下,我們將使用以下篩選:
          objDialog.Filter = "Text Files|*.txt"

      您也許能夠看出它是如何運行的:我們為文件類型提供說明 (Text Files),然后插入一個豎線分隔符 (|),最后使用標準的通配符來指示所有 .txt 文件 (*.txt)。
      是不是想默認顯示 .txt 文件,然后為用戶提供查看所有文件的選項?那么可以使用以下代碼:
          objDialog.Filter = "Text Files|*.txt|All Files|*.*"

      試一試,您就明白我們的意思了。

3)然后,我們指定默認文件夾。
      默認情況下,我們希望對話框顯示位于驅動器 C 的根文件夾中的文件,所以我們這樣設置“InitialDir”屬性:
          objDialog.InitialDir = "C:/"

      希望顯示 C:/Windows 文件夾中的文件嗎?那么可以使用以下代碼:
          objDialog.InitialDir = "C:/Windows"

      不必擔心:這是一個真正的“文件打開”對話框,所以您可以隨意單擊,并且可以隨時停下來。您從 C:/Windows 開始并不意味著您只能打開該文件夾中的文件。

4)最后,我們使用下面這行代碼顯示對話框:

          intResult = objDialog.ShowOpen

  現在,我們只需坐下來,等待用戶選擇文件并單擊“確定”(或者等待用戶單擊“取消”)。
  如果用戶單擊“取消”,則變量 intResult 將被設置為 0。在我們的腳本中,我們檢查 intResult 的值,如果是 0,我們將只需要使用 Wscript.Quit 來終止此腳本。
  但是如果用戶實際上選擇了文件并單擊了“確定”,那該怎么辦?在這種情況下,intResult 將被設置為 -1,“FileDialog”屬性將被設置為所選文件的路徑名。我們的腳本只回顯路徑名,這意味著我們將得到類似以下內容的輸出:

          C:/WINDOWS/Prairie Wind.bmp

  不用說,您并不局限于只回顯文件路徑。實際上,您可以使用 WMI、FileSystemObject 或一些其他技術來綁定該文件,然后對其執行刪除、復制、壓縮或檢索文件屬性等操作 — 您對文件能夠執行的操作差不多都可以對它執行。

  但無論如何,您都需要使用腳本。

  順便說一句,使用此方法,您一次只能選擇一個文件,而不能按住“Ctrl”鍵選擇多個文件。有一種方法可以選擇多個文件,至少在 XP 計算機上可以,但是我們只能將此問題留到以后的專欄中討論了。

 

二、顯示“選擇文件夾”對話框?

問:嗨,腳本專家!在前面的專欄中,您為我們展示了如何給用戶顯示對話框,使他們能夠選擇文件。存在給用戶顯示一個對話框,只讓他們選擇文件夾的辦法嗎?

答:您好。

  實際上,我們有 BrowseForFolder 方法,它是 Windows Shell 對象的一部分。

  讓我給您一個腳本示例,然后講一下它的工作方式:

   

復制代碼代碼如下:

 Const WINDOW_HANDLE = 0 
    Const OPTIONS = 0 
    Set objShell = CreateObject("Shell.Application") 
    Set objFolder = objShell.BrowseForFolder _ 
    (WINDOW_HANDLE, "Select a folder:", OPTIONS, "C:/") 
    If objFolder Is Nothing Then 
    Wscript.Quit 
    End If 
    Set objFolderItem = objFolder.Self 
    objPath = objFolderItem.Path 
    Wscript.Echo objPath

  首先,我們定義一對常量:WINDOW_HANDLE 和 OPTIONS。
  WINDOW_HANDLE 常量表示需要指定給要顯示的對話框的數字 ID;對于腳本,此值應始終為 0。
  將 OPTIONS 設置為 0 表示我們將顯示一個非常簡單的對話框,一個限制用戶只從文件夾列表進行選擇的對話框。或者,我們可以將 OPTIONS 設置成 &H10&。這種情況下,我們的對話框將包括文本區,用戶可以在此鍵入文件夾路徑。

 

  定義完常量后,我們創建 Shell.Application 對象的實例,然后使用以下代碼顯示“瀏覽文件夾”對話框:
    Set objFolder = objShell.BrowseForFolder _
    (WINDOW_HANDLE, "Select a folder:", OPTIONS, "C:/")

  您可以看到,我們只是調用 BrowseForFolder 方法,傳遞了四個參數:
    WINDOW_HANDLE,正如我們所說明的,是分配給對話框窗口的數字 ID。
    文本字符串 Select a folder:,將作為顯示在對話框中的說明性消息。
    OPTIONS,表示構造對話框所用選項的常量。
    C:/,將作為對話框的根文件夾。對話框將打開 C:/,但不允許您選擇樹視圖中較上方的文件位置(例如,您不能選擇“我的電腦”)。如果將根文件夾設置為 C:/Scripts,則將只允許用戶選擇文件夾 C:/Scripts 及其所有子文件夾。

  該代碼將產生一個類似屏幕上顯示的對話框。
 ?。欠裼幸蓡?,是的,您以前曾見過此對話框。許多 Windows 應用程序使用同樣的方法,同樣的對話框。)

  此時,我們的腳本暫停,等候用戶選擇文件夾并單擊確定,或者單擊取消。當用戶進行了這兩個操作之一,對話框將被清除,操作將存儲在對象引用 objFolder 中。

  那么我們如何知道用戶是否選擇了一個文件夾并單擊了確定,或者只單擊了取消?以下代碼塊就用來解決這個問題:
    If objFolder Is Nothing Then
    Wscript.Quit
    End If

  該代碼檢查我們的對象引用 (objFolder) 是否等于一個真正對象(這是關鍵字 Nothing 的用途)。如果 objFolder 等于 Nothing,則意味著用戶單擊了取消;如果是那樣的話,我們只簡單用 Wscript.Quit 退出腳本。如果 objFolder 不等于 Nothing,那么 objFolder 一定指向一個真正的對象;于是腳本將繼續運行。

  由于 Shell 對象的特點,以下兩行代碼是必要的:
    Set objFolderItem = objFolder.Self
    objPath = objFolderItem.Path

  當用戶選擇文件夾并單擊確定,他們將得到 Shell Folder 對象的實例。然而,由于某些原因您不能使用 Shell Folder 對象;如果我們要檢索選定文件夾的路徑,我們得用 FolderItem 對象來代替。(為什么是這樣呢?我們不知道。)于是,我們的第一行代碼使用 Self 方法返回一個 FolderItem 對象,該對象正與我們的 Folder 對象相同。第二行代碼將到此 FolderItem 對象的路徑存儲到變量 objPath 中??瓷先ビ悬c笨拙,但它確實能夠工作。

  最后我們回顯到選定文件夾的路徑,到此工作既已完成。

  正如我們說明的,示例對話框使用 C:/ 作為根文件夾,不允許您選擇位于計算機其他地方的文件夾。有時這樣做很好;這樣會迫使用戶從一組特定文件夾中進行選擇。但有時,想使用戶能夠選擇文件系統中任意位置的文件夾。這可能嗎?

  當然可以。我們不詳述這個修改后的腳本,但該腳本會將“我的電腦”設置為根文件夾:
    

復制代碼代碼如下:

Const MY_COMPUTER = &H11& 
    Const WINDOW_HANDLE = 0 
    Const OPTIONS = 0 
    Set objShell = CreateObject("Shell.Application") 
    Set objFolder = objShell.Namespace(MY_COMPUTER) 
    Set objFolderItem = objFolder.Self 
    strPath = objFolderItem.Path 
    Set objShell = CreateObject("Shell.Application") 
    Set objFolder = objShell.BrowseForFolder _ 
    (WINDOW_HANDLE, "Select a folder:", OPTIONS, strPath) 
    If objFolder Is Nothing Then 
    Wscript.Quit 
    End If 
    Set objFolderItem = objFolder.Self 
    objPath = objFolderItem.Path 
    Wscript.Echo objPath

  如您所料,所得到的對話框提供了很多選擇。這正是您所需要的。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品嫩草影院久久久| 亚洲香蕉成人av网站在线观看| 亚洲精品国偷自产在线99热| 日韩中文视频免费在线观看| 亚洲电影成人av99爱色| 在线播放日韩欧美| 亚洲天堂第一页| 国内精品久久影院| 91大神在线播放精品| 91久久精品在线| 欧美俄罗斯乱妇| 亚洲欧美国产制服动漫| 午夜精品一区二区三区av| 欧美日韩xxx| 欧美极品少妇xxxxⅹ喷水| 国产精品免费电影| 中文国产亚洲喷潮| 欧美精品一区三区| 国产xxx69麻豆国语对白| 精品国产区一区二区三区在线观看| 日韩精品极品毛片系列视频| 亚洲电影免费观看高清完整版| 国产日韩欧美自拍| 中文字幕精品视频| 欧美中文字幕在线视频| 亚洲国产精彩中文乱码av在线播放| 日韩欧美福利视频| 国产精品一区二区女厕厕| 精品magnet| 日韩精品在线免费观看视频| 久久深夜福利免费观看| 欧美日韩中文字幕综合视频| 成人精品视频在线| 一本久久综合亚洲鲁鲁| 69av成年福利视频| 久久综合久中文字幕青草| 黑人巨大精品欧美一区二区一视频| 成人啪啪免费看| 国产成人久久精品| 亚洲精品资源美女情侣酒店| 久久大大胆人体| 91免费福利视频| 久久99热精品| 日韩av影片在线观看| 国产中文字幕91| 久久久久久国产| 国产成人激情视频| 国产精品视频网| 揄拍成人国产精品视频| 美女国内精品自产拍在线播放| 亚洲free性xxxx护士hd| www国产精品com| 国产精品一区二区久久| 国产91免费看片| 日韩电影第一页| 欧美性xxxx极品hd满灌| 亚洲国产精品一区二区久| 精品调教chinesegay| 中文字幕亚洲无线码在线一区| 久久久久五月天| 欧美激情久久久久久| 日韩中文有码在线视频| 日韩视频―中文字幕| 久久男人av资源网站| 美女av一区二区三区| 亚洲欧美制服第一页| 日韩视频中文字幕| 日韩高清有码在线| 亚洲综合中文字幕在线| 久久久亚洲福利精品午夜| 久久91亚洲精品中文字幕| 欧美性生交xxxxx久久久| 精品调教chinesegay| 97国产精品人人爽人人做| 国产精品稀缺呦系列在线| 日韩欧美在线网址| 欧美激情一级欧美精品| 亚洲成人av中文字幕| 亚洲第一国产精品| 国产va免费精品高清在线| 国产最新精品视频| 国产成人久久精品| 91精品国产综合久久久久久久久| 国产精品午夜一区二区欲梦| 精品视频—区二区三区免费| 日本精品中文字幕| www国产91| 久久久久久999| 国产精品www色诱视频| 欧美在线日韩在线| 7777kkkk成人观看| 久久av中文字幕| 日韩hd视频在线观看| 欧美午夜精品伦理| 欧美激情亚洲综合一区| 国产精品男女猛烈高潮激情| 美女性感视频久久久| 欧美老少做受xxxx高潮| 亚洲男人天堂九九视频| 久热在线中文字幕色999舞| 亚洲精品永久免费| 久久精品99无色码中文字幕| 免费av在线一区| 久久久久亚洲精品成人网小说| 92看片淫黄大片看国产片| 国模精品视频一区二区三区| 精品国产乱码久久久久久天美| 精品亚洲精品福利线在观看| 视频在线观看一区二区| 国产精品一区二区电影| 欧美性猛交99久久久久99按摩| 国产91av在线| 亚洲性视频网址| 久久午夜a级毛片| 亚洲综合av影视| 97久久精品人搡人人玩| 国产91网红主播在线观看| 亚洲美女在线观看| 岛国视频午夜一区免费在线观看| 精品露脸国产偷人在视频| 日韩在线观看高清| 91香蕉嫩草神马影院在线观看| 久久精品人人爽| 欧美另类高清videos| 福利一区福利二区微拍刺激| 久久久久久噜噜噜久久久精品| 国产精品视频在线观看| 欧美午夜无遮挡| 色综合久久中文字幕综合网小说| 538国产精品一区二区免费视频| 一区二区欧美日韩视频| 最好看的2019的中文字幕视频| 欧美精品一本久久男人的天堂| 亚洲欧美在线第一页| 亚洲欧美制服另类日韩| 九色精品美女在线| 成人精品视频久久久久| 欧美在线观看一区二区三区| 亚洲国产小视频| 欧美午夜xxx| 午夜美女久久久久爽久久| 色综合久久天天综线观看| 日韩欧美极品在线观看| 亚洲丁香婷深爱综合| 国产成人精品久久| 亚洲欧美日韩一区二区三区在线| 欧美国产日本高清在线| 伊人成人开心激情综合网| 成人精品视频在线| 欧美成人高清视频| 欧美日韩免费在线观看| 欧美在线视频一区二区| 欧美xxxx做受欧美| 国产欧美日韩高清| 欧美激情在线狂野欧美精品| 91在线中文字幕| 亚洲国产精品大全| 国语自产精品视频在线看一大j8| 国产精品十八以下禁看| 91视频免费在线| 欧美性视频精品| 国内精品久久久久久中文字幕| 国产日韩欧美日韩大片| 欧美色视频日本版|