说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

VB中用API函数实现文件夹列表

HTML文档下载 WORD文档下载 PDF文档下载
VB中用API函数实现文件夹列表
山东济宁市食品进出口公司
唐成斌
---- 在安装软件等一些操作中,需要用户指定安装路径,现在软件的安装界面都是非常友好的,一般来说给出一个缺省路径,用户如不满意可以在文件夹列表中选择其他的路径。 在WIN9X下,一般不再采用原来的先在驱动器列表框中选择驱动器再在相应的驱动器中选择相应文件夹的界面,而是采用的类似资源管理器中“所有文件夹”界面:最上层是“桌面”,然后是“我的电脑”、驱动器A、C、D...等,在一个列表框中用户可实现浏览所有驱动器及文件夹的操作。这种特色的文件列表没有现成的控件可供使用,但利用API函数可方便地实现。

---- 实现方法:API函数SHBrowseForFolder可以提供这样的文件列表,它需要用到一个BROWSEINFO类型,此类型包括了列表框使用的参数,此类型的声明见下面的程序,其中这里用到的几个参数简单说明一下:

---- hwndOwner—当前窗口的句柄。

---- pidlRoot—从何根路径开始展开文件夹,缺省情况下从“桌面”开始展开。

---- lpszTitle—目录树上方的标题,用来给用户一些提示信息。

---- ulFlags—显示标志控制项:比如若赋值为BIF_BROWSEFORCOMPUTER,则只有当用户选择“我的电脑”时“确定”按钮才有效,这里我们需要的是

---- BIF_RETURNONLYFSDIRS,只有用户选择的是文件夹时“确定”按钮才有效。

---- 此函数返回值是指向项目(ITEM)的一个指针,有了这个数值,再用API函数SHGetPathFromIDList可以获得具体的路径,如果用户按的是“取消”按钮,则返回值为NULL。

---- 下面是一个例子,在窗体中放置一个命令按钮command1、一个文本框Text1,在窗体的声明部分API声明函数和类型及常量如下:

Option Explicit

Private Type BROWSEINFO
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type

Const BIF_RETURNONLYFSDIRS = &H1

Private pidl As Long

Private Declare Function
SHGetPathFromIDList _
Lib "shell32.dll" Alias
"SHGetPathFromIDListA" _
(ByVal pidl As Long, ByVal
pszPath As String) As Long

Private Declare Function
SHBrowseForFolder Lib "shell32.dll" _
Alias "SHBrowseForFolderA" _
(lpBrowseInfo As BROWSEINFO) As Long
---- 双击命令按钮,写如下代码:

Private Sub command1_Click()
Dim bi As BROWSEINFO
Dim r As Long
Dim pidl As Long
Dim path As String
Dim pos As Integer
'句柄
bi.hOwner = Me.hWnd
'展开根目录
bi.pidlRoot = 0&
'列表框标题
bi.lpszTitle = "请选择软件安装路径:"
'规定只能选择文件夹,其他无效
bi.ulFlags = BIF_RETURNONLYFSDIRS
'调用API函数显示列表框
pidl = SHBrowseForFolder(bi)
'利用API函数获取返回的路径
path = Space$(512)
r = SHGetPathFromIDList(ByVal pidl&, ByVal path)
If r Then
pos = InStr(path, Chr$(0))
Text1 = Left(path, pos - 1)
Else: Text1 = ""
End If
End Sub
---- 运行此程序,单击命令按钮,就可以看到和资源管理器中一样的“所有文件夹”列表了。

---- 此程序在中文WIN95/98、中文VB5.0专业版下调试通过,也适用于VB4.0。
VB用类来编写数据库程序 优化OLE的调用频率-VB资料 语言选择引起的查询错误 -VB资料 远程数据库的访问-VB资料 运用ADO进行数据库表数据互导 -VB资料 菜鸟求教!!!! 关于VB数据库问题!!超急!!!!谢谢各位前辈 求一SQL语句写法 谁能该我Rose2002的下在地址,我找过好多都不能下载,谢谢!!! 请问如何用程序定时重起电脑? 我的IE首页被一个网站改了。 help me !how to install eclipse on red hat8.0? 提问高手:如何改变ListView中行的高度??? 鸡毛信:这个SQL查询怎么写 经济生活 公司承担责任问题1:公司承担有限责任 当 从经济生活的角度谈谈我国重视小微企业发展的必要性 如何解决小微企业融资难的问题(高中政治《经济生活》 化学判断‘蜡烛燃烧后质量变小,说明质量守恒定律不是 初中,化学,有人说,蜡烛燃烧后质量变小,说明质量守 就如何处理好政府与企业,市场的关系提出合理化建议 请你为我国企业“走出去”提几条合理化建议 同样重的铝块和铜块,铜块浸没煤油中,铝块浸没在水中 物理证明同样重的铝块和铜块,铜块浸在水中,铝块浸在 欧洲盗贼偷多幅世界名画 称怪艺术馆安东京警视厅一警官因涉嫌唆使少女卖淫遭新加坡消费者花数万元上金融课讲师竟是调查:23%美国人通过交友网站找到另中国多地雾气仍未散 内蒙古等地将迎来首家国防教育基金会在沪成立中金看好煤炭股 私募称牛市行情启动促进现代服务业集聚发展《明星家族》侵权《两天一夜》?四川卫苏浙沪皖产权交易统一规则阿修罗王传止战之歌最后的龙骑士夜火蝴蝶风暴情人岛旅游舟山跨海大桥旅游杭州湾大桥旅游中天楼旅游贡院旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘