分享
 
 
 

如何用VB获得Windows各类系统目录

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

现在有很多关于如何用VB获得Windows目录的文章,但大都只讲到如何获得Windows目录和System目录,有时候我们却需要获得像"我的文档"这样的目录("我的文档"的路径并不是固定的,可以由自己设定,也有可能因为系统的安装路径不同而不同),那又该如何处理呢?下面我们来具体谈谈如何用VB获得这种路径。

先向大家介绍两个API函数,这两个函数分别是SHGetSpecialFolderLocation和SHGetPathFromIDList,这就是我们用来获得各种路径的武器。

函数声明:

Private Declare Function SHGetSpecialFolderLocation Lib "Shell32" (ByVal hwndOwner As Long, ByVal nFolder As Integer, ppidl As Long) As Long

Private Declare Function SHGetPathFromIDList Lib "Shell32" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal szPath As String) As Long

函数功能及参数说明:

SHGetSpecialFolderLocation:获得某个特殊目录在特殊目录列表中的位置;它有三个参数,第一个参数是用来指定所有者窗口的,在应用中一般我们写上"0"就可以了;第二个参数是一个整数id,它决定要查找的目录是哪一个目录,它的取值可能如下:

&H0& '桌面

&H2& '程序集

&H5& '我的文档

&H6& '收藏夹

&H7& '启动

&H8& '最近打开的文件

&H9& '发送

&HB& '开始菜单

&H13& '网上邻居

&H14& '字体

&H15& 'ShellNew

&H1A& 'Application Data

&H1B& 'PrintHood

&H20& '网页临时文件

&H21& 'Cookies目录

&H22& '历史

第三个参数是获得的特殊目录在特殊目录列表中的地址。

SHGetPathFromIDList:根据某特殊目录在特殊目录列表中的地址获取该目录的准确路径。它有两个参数,第一个参数是特殊目录在特殊目录列表中的地址,也即上一个函数所获得的地址;第二个参数是一个字符串型数据,用来保存返回的特殊目录的准确路径。

比如:为了获得DeskTop的路径,首先需调用SHGetSpecialFolderLocation获得DeskTop在特殊目录列表中的位置Pid,然后调用SHGetPathFromIDList函数获得Pid指向的列表内容,即DeskTop的准确路径。

下面是我编写的一个用来获取Windows各种目录路径的例子,供大家参考。如果您有什么问题或建议,欢迎给我来信(xuhaoliang@21cn.com)。

程序界面如下:

[/url]

程序代码如下:

Private Declare Function SHGetSpecialFolderLocation Lib "Shell32" (ByVal hwndOwner As Long, ByVal nFolder As Integer, ppidl As Long) As Long

Private Declare Function SHGetPathFromIDList Lib "Shell32" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal szPath As String) As Long

Private Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long

Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long

Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long

Const MAX_LEN = 200 '字符串最大长度

Const DESKTOP = &H0& '桌面

Const PROGRAMS = &H2& '程序集

Const MYDOCUMENTS = &H5& '我的文档

Const MYFAVORITES = &H6& '收藏夹

Const STARTUP = &H7& '启动

Const RECENT = &H8& '最近打开的文件

Const SENDTO = &H9& '发送

Const STARTMENU = &HB& '开始菜单

Const NETHOOD = &H13& '网上邻居

Const FONTS = &H14& '字体

Const SHELLNEW = &H15& 'ShellNew

Const APPDATA = &H1A& 'Application Data

Const PRINTHOOD = &H1B& 'PrintHood

Const PAGETMP = &H20& '网页临时文件

Const COOKIES = &H21& 'Cookies目录

Const HISTORY = &H22& '历史

Private Sub Command2_Click()

End

End Sub

Private Sub Form_Load()

Dim sTmp As String * MAX_LEN '存放结果的固定长度的字符串

Dim nLength As Long '字符串的实际长度

Dim pidl As Long '某特殊目录在特殊目录列表中的位置

'*************************获得Windows目录**********************************

Length = GetWindowsDirectory(sTmp, MAX_LEN)

txtWin.Text = Left(sTmp, Length)

'*************************获得System目录***********************************

Length = GetSystemDirectory(sTmp, MAX_LEN)

txtSystem.Text = Left(sTmp, Length)

'*************************获得Temp目录***********************************

Length = GetTempPath(MAX_LEN, sTmp)

txtTemp.Text = Left(sTmp, Length)

'*************************获得DeskTop目录**********************************

SHGetSpecialFolderLocation 0, DESKTOP, pidl

SHGetPathFromIDList pidl, sTmp

txtDesktop.Text = Left(sTmp, InStr(sTmp, Chr(0)) - 1)

'*************************获得发送到目录**********************************

SHGetSpecialFolderLocation 0, SENDTO, pidl

SHGetPathFromIDList pidl, sTmp

txtSendTo.Text = Left(sTmp, InStr(sTmp, Chr(0)) - 1)

'*************************获得我的文档目录*********************************

SHGetSpecialFolderLocation 0, MYDOCUMENTS, pidl

SHGetPathFromIDList pidl, sTmp

txtDocument.Text = Left(sTmp, InStr(sTmp, Chr(0)) - 1)

'*************************获得程序集目录***********************************

SHGetSpecialFolderLocation 0, PROGRAMS, pidl

SHGetPathFromIDList pidl, sTmp

txtProgram.Text = Left(sTmp, InStr(sTmp, Chr(0)) - 1)

'*************************获得启动目录*************************************

SHGetSpecialFolderLocation 0, STARTUP, pidl

SHGetPathFromIDList pidl, sTmp

txtStart.Text = Left(sTmp, InStr(sTmp, Chr(0)) - 1)

'*************************获得开始菜单目录*********************************

SHGetSpecialFolderLocation 0, STARTMENU, pidl

SHGetPathFromIDList pidl, sTmp

txtStartMenu.Text = Left(sTmp, InStr(sTmp, Chr(0)) - 1)

'*************************获得收藏夹目录***********************************

SHGetSpecialFolderLocation 0, MYFAVORITES, pidl

SHGetPathFromIDList pidl, sTmp

txtFavorites.Text = Left(sTmp, InStr(sTmp, Chr(0)) - 1)

'**********************获得最后打开的文件目录*******************************

SHGetSpecialFolderLocation 0, RECENT, pidl

SHGetPathFromIDList pidl, sTmp

txtRecent.Text = Left(sTmp, InStr(sTmp, Chr(0)) - 1)

'*************************获得网上邻居目录*********************************

SHGetSpecialFolderLocation 0, NETHOOD, pidl

SHGetPathFromIDList pidl, sTmp

txtNetHood.Text = Left(sTmp, InStr(sTmp, Chr(0)) - 1)

'*************************获得字体目录**********************************

SHGetSpecialFolderLocation 0, FONTS, pidl

SHGetPathFromIDList pidl, sTmp

txtFonts.Text = Left(sTmp, InStr(sTmp, Chr(0)) - 1)

'*************************获得Cookies目录**********************************

SHGetSpecialFolderLocation 0, COOKIES, pidl

SHGetPathFromIDList pidl, sTmp

txtCookies.Text = Left(sTmp, InStr(sTmp, Chr(0)) - 1)

'*************************获得历史目录**********************************

SHGetSpecialFolderLocation 0, HISTORY, pidl

SHGetPathFromIDList pidl, sTmp

txtHistory.Text = Left(sTmp, InStr(sTmp, Chr(0)) - 1)

'***********************获得网页临时文件目录*******************************

SHGetSpecialFolderLocation 0, PAGETMP, pidl

SHGetPathFromIDList pidl, sTmp

txtPageTmp.Text = Left(sTmp, InStr(sTmp, Chr(0)) - 1)

'*************************获得ShellNew目录*********************************

SHGetSpecialFolderLocation 0, SHELLNEW, pidl

SHGetPathFromIDList pidl, sTmp

txtShellNew.Text = Left(sTmp, InStr(sTmp, Chr(0)) - 1)

'***********************获得Application Data目录*****************************

SHGetSpecialFolderLocation 0, APPDATA, pidl

SHGetPathFromIDList pidl, sTmp

txtAppData.Text = Left(sTmp, InStr(sTmp, Chr(0)) - 1)

'*************************获得PrintHood目录*********************************

SHGetSpecialFolderLocation 0, PRINTHOOD, pidl

SHGetPathFromIDList pidl, sTmp

txtPrintHood.Text = Left(sTmp, InStr(sTmp, Chr(0)) - 1)

End Sub

第一次发表东西,不妥之处还请大家见谅,希望能多和大家交流^_^

Email:xuhaoliang@21cn.com

主页:[url=http://www.xygu.com]http://www.xygu.com

QQ:3900168

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝網路 版權所有