在VB和Web頁面中使用Shell物件 (轉)

gugu99發表於2008-03-07
在VB和Web頁面中使用Shell物件 (轉)[@more@]

在VB和頁面中使用

武漢測繪科技大學光電工程學院電子工程系
朱劼

---- 什麼是Shell物件?具體來講,就是對一些常用外殼操作的封裝。象開啟或瀏覽一個夾、查詢檔案、關閉等等,而且還能瀏覽整個檔案,獲取檔案或資料夾的各種資訊。由於這些封裝是建立在OLE自動化服務的基礎之上,所以我們就可以在VB和Web中方便的使用它們。

---- 在VB中使用

---- VB自身所提供的物件或函式的功能也許比較有限,但能夠引用各式各樣的型別庫和自動化物件就將其功能無限的擴充套件了!具體做法如下(以中文為例):

---- 新建一個工程,在“工程”選單中選擇“引用”,你將看到一個“引用對話方塊”,然後在“可用的引用”中選擇“ Shell Controls and Automation”,這樣你就可以在中使用Shell物件了。

---- 下面來試一試Shell物件提供的方法。在窗體(Form1)中新增一個按扭(Button1),然後在Button1的Click事件中新增如下程式碼:

Dim MyShell As Shell Set MyShell = New Shell MyShell.FindFiles


---- 當MyShell變數成為Shell物件的例項之後,你在編輯的過程中就可以看到Shell物件的所有方法。上面的程式碼使用的是FindFiles方法,它將顯示“查詢檔案”對話方塊。下表給出了Shell物件中常用的方法,以供大家參考。

---- 方法 描述

---- BrowseForFolder 顯示瀏覽資料夾對話方塊,包括4個引數:

---- Hwnd, Title, Options, [Folder]

---- Hwnd:包含對話方塊的窗體控制程式碼(handle),一般設定為0。 Title:將在對話方塊中顯示的說明,為字串。

---- Options:使用對話方塊的特殊方式,為長整數,一般設定為0。

---- [RootFolder]:可選的,用來設定瀏覽的最頂層資料夾,預設時為“桌面”,你可以將其設定為一個路徑或“特殊資料夾常數”。

---- 該方法返回一個Folder物件。

---- ControlPanelItem 執行一個指定的控制皮膚專案,包括一個引數:

---- szDir:控制皮膚專案名

---- Explore 用瀏覽一個指定資料夾,包括一個引數:

---- vDir:一個路徑或“特殊資料夾常數”

---- Open 開啟一個指定資料夾,包括一個引數:

---- vDir:一個路徑或“特殊資料夾常數”

---- FileRun 顯示“執行”對話方塊

---- FindComputer 顯示“查詢計算機”對話方塊

---- FindFiles 顯示“查詢檔案”對話方塊

---- Cascade 層疊排列桌面上所有視窗

---- TileHorizontally 橫向排列桌面上所有視窗

---- TileVertically 縱向排列桌面上所有視窗

---- MinimizeAll 最小化所有視窗

---- UninimizeALL 恢復最小化的視窗

---- EjectPC 登出當前

---- Suspend 將計算機掛起

---- ShutdownWindows 顯示“關閉Windows”對話方塊

---- NameSpace 用所給的資料夾路徑建立一個資料夾物件(Folder物件),使用Folder物件,你可以瀏覽整個檔案系統,獲取檔案或資料夾的各種資訊。

---- 表中出現了“特殊資料夾常數”,那什麼是特殊資料夾,象“我的”,“控制皮膚”等等,在系統中是找不到相應目錄的,還有“桌面”、“收藏夾”等一些Windows後就產生的資料夾,也是特殊資料夾(0x表示16進位制)。

  1. 桌面:sDESKTOP = 0x0000
  2. 文件:ssfSENDTO = 0x0009
  3. 收藏夾:ssfFAVORITES = 0x0006
  4. 印表機:ssfPRINTERS = 0x0004
  5. 我的電腦:ssfDRIVES = 0x0011
  6. 控制皮膚:ssfCONTROLS = 0x0003
  7. 鄰居:ssWORK = 0x0012

---- 有了這些提示和參考,再加上你的想象,一定能讓VB編出程式增色不少。

---- 在Web頁面中使用

---- 由於IE4及其以後的版本都能很好的支援,你可以在Web頁面插入各式各樣ActiveX,因此也能使用Shell物件。

---- 在HTML4中可以使用< >標識引用Shell物件,具體的HTML程式碼如下:

< html > < head > < title >Shell物件測試< /title > < meta http-equiv="Content-Type" content="text/html; charset=gb2312" > < /head > < body bgcolor="#FFFFFF" > < object classid=CLSID:13709620-C279-11CE- A49E-444553540000 id=Shell > < /object > Shell物件測試 < p > < input type="button" name="Button" value="顯示" onclick="test.innerText = Shell.BrowseForFolder(0,'請選擇一個資料夾',0);" > < /p > < p >< span id=test >< /span >< /p > < /body > < /html >


---- 你只需新建一個文字檔案,將以上程式碼寫入新檔案中,再另存為以htm為副檔名的檔案即可。當執行該Web頁後,你將看到一個名為“顯示”的按扭,單擊就會出現“瀏覽資料夾”對話方塊。

---- 該段程式碼的關鍵就是< object classid=CLSID:13709620-C279-11CE-A49E-444553540000 id=Shell >。其中classid是Shell物件的CLSID號,id是Shell物件例項的名稱,透過這個名稱就可以使用Shell物件的各種方法。

---- 由Shell物件建立的Folder物件

---- 在上面的事例和參考中,總有一個Folder物件,那如何使用該物件呢?一個Folder物件包含了一個指定資料夾的所有資訊:子目錄,其中的檔案等等。使用items方法可以返回一個資料夾專案集合(FolderItems集合),這個集合裡有指定目錄中的所有子目錄和檔案。

---- FolderItems集合有一個count屬性,可以透過它得到子目錄和檔案總數,這樣你就能用一個“迴圈語句”歷遍目錄下的所有專案。同時你就可以用item方法返回一個FolderItem物件,對一個資料夾或檔案進行操作,item方法有一個可選長整數引數,用來對集合中的專案。有了FolderItem物件,就能得到資料夾和檔案的各種資訊。FolderItem物件有如下主要屬性:

  1. GetFolder :如果專案是資料夾,就得到一個Folder物件
  2. IsBrowsable :如果可以瀏覽就為True,否則為False
  3. IsFileSystem :如果是系統資料夾或檔案就為True,否則為False
  4. IsFolder :如果是資料夾就為True,否則為False
  5. ModifyDate :訪問或更改的日期
  6. Name :檔案或目錄名
  7. Path :檔案或目錄的路徑
  8. Size :檔案的大小
  9. Type :檔案的型別

---- 下面是Folder物件的示例。

---- 在VB中使用:在先前的窗體中加入一個新按扭(Button2)和一個列表框(List1),再在Button2的Click事件中加入如下程式碼:

Dim MyShell As Shell Dim myFolder, myFolders Set MyShell = New Shell Set myFolder = MyShell.BrowseForFolder (Form1.hWnd, "請選擇一個資料夾", 0) Set myFolders = myFolder.Items() List1.Clear For i = 0 To myFolders.Count - 1 List1.AddItem myFolders.Item(i).Name Next I


---- 在Web頁中使用:將以下程式碼加入上一節示例中< head >< /head >之間,再把onclick="test.innerText = Shell.BrowseForFolder(0,'請選擇一個資料夾',0);"換為onclick="test.innerHTML = ShowItem();",就能執行了!

< script language="script" > function ShowItem() { var myFolder, myFolders; var s = ""; myFolder = Shell.BrowseForFolder(0,"請選擇一個資料夾",0); myFolders = myFolder.items(); for (var i = 0;i < myFolders.count;i++) s += myFolders.item(i).name + "< br >"; return(s) } < /script >


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1000539/,如需轉載,請註明出處,否則將追究法律責任。

相關文章