分享
 
 
 

在VB和Web页面中使用Shell对象

王朝vb·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

在VB和Web页面中使用Shell对象

武汉测绘科技大学光电工程学院电子工程系

朱劼

---- 什么是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 >

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有