在VB和Web頁面中使用Shell對象

發表于:2007-07-14來源:作者:點擊數: 標簽:
武漢測繪科技大學光電工程學院電子工程系 朱劼 ---- 什么是Shell對象?具體來講,就是微軟對一些常用外殼操作函數的封裝。象打開或瀏覽一個文件夾、查找文件、關閉計算機等等,而且還能瀏覽整個文件系統,獲取文件或文件夾的各種信息。由于這些封裝是建立在O
武漢測繪科技大學光電工程學院電子工程系
朱劼
---- 什么是Shell對象?具體來講,就是微軟對一些常用外殼操作函數的封裝。象打開或瀏覽一個文件夾、查找文件、關閉計算機等等,而且還能瀏覽整個文件系統,獲取文件或文件夾的各種信息。由于這些封裝是建立在OLE自動化服務的基礎之上,所以我們就可以在VB和Web中方便的使用它們。

---- 在VB中使用

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

---- 新建一個工程,在“工程”菜單中選擇“引用”,你將看到一個“引用對話框”,然后在“可用的引用”中選擇“Microsoft 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, [RootFolder]

---- Hwnd:包含對話框的窗體句柄(handle),一般設置為0。 Title:將在對話框中顯示的說明,為字符串。

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

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

---- 該方法返回一個Folder對象。

---- ControlPanelItem 運行一個指定的控制面板項目,包括一個參數:

---- szDir:控制面板項目名

---- Explore 用資源管理器瀏覽一個指定文件夾,包括一個參數:

---- vDir:一個路徑或“特殊文件夾常數”

---- Open 打開一個指定文件夾,包括一個參數:

---- vDir:一個路徑或“特殊文件夾常數”

---- FileRun 顯示“運行”對話框

---- FindComputer 顯示“查找計算機”對話框

---- FindFiles 顯示“查找文件”對話框

---- CascadeWindows 層疊排列桌面上所有窗口

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

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

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

---- UndoMinimizeALL 恢復最小化的窗口

---- EjectPC 注銷當前用戶

---- Suspend 將計算機掛起

---- ShutdownWindows 顯示“關閉Windows”對話框

---- NameSpace 用所給的文件夾路徑創建一個文件夾對象(Folder對象),使用Folder對象,你可以瀏覽整個文件系統,獲取文件或文件夾的各種信息。

---- 表中出現了“特殊文件夾常數”,那什么是特殊文件夾,象“我的電腦”,“控制面板”等等,在系統中是找不到相應目錄的,還有“桌面”、“收藏夾”等一些Windows安裝后就產生的文件夾,也是特殊文件夾(0x表示16進制)。

桌面:ssfDESKTOP = 0x0000

文檔:ssfSENDTO = 0x0009

收藏夾:ssfFAVORITES = 0x0006

打印機:ssfPRINTERS = 0x0004

我的電腦:ssfDRIVES = 0x0011

控制面板:ssfCONTROLS = 0x0003

網絡鄰居:ssfNETWORK = 0x0012
---- 有了這些提示和參考,再加上你的想象,一定能讓VB編出程序增色不少。

---- 在Web頁面中使用

---- 由于IE4及其以后的版本都能很好的支持ActiveX,你可以在Web頁面插入各式各樣ActiveX,因此也能使用Shell對象。

---- 在HTML4中可以使用< Object >標識引用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對象有如下主要屬性:

GetFolder :如果項目是文件夾,就得到一個Folder對象

IsBrowsable :如果可以瀏覽就為True,否則為False

IsFileSystem :如果是系統文件夾或文件就為True,否則為False

IsFolder :如果是文件夾就為True,否則為False

ModifyDate :訪問或更改的日期

Name :文件或目錄名

Path :文件或目錄的路徑

Size :文件的大小

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="JavaScript" >
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 >

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97