文章探索:   分类:    关键字:  
  + 栏目导航
  + 相关文章
文本框中光标位置的获得
用VB导入导出你的IE收藏夹
VB应用程序访问SQL Server方法探讨
VB访问SQL Server数据库技术全揭密
自动上网抓数据的机器人
自己的IE——用VB制作浏览器
VB中如何保存Webbrowser中的整个页面..
在VB中该如何控制其它程序的弹出窗口..
保存webbrowser中的HTML内容
破译动网验证码的简单方法
轻松获取QQ密码
VB.NET获取硬盘序列号的方法
WEBBROWSER 技巧一(收藏)
VB自动登陆网络站点详解(二):Inet..
获取webbrowser控件网页的源码
WebBrowser控件说明
关于用VB做更漂亮的窗体的思考
VB中访问存储过程的几种办法
VB6中改变屏幕的分辨率和刷新频率
VB编写一个能显示百分比的自定义进度..
公农历转换VB类
VB.NET窗口渐淡关闭
使用VB实现邮箱自动注册(二):修改..
VB.NET轻松实现任务栏程序
VB.NET启动外部程序
利用vb实现图片上传
VB实现局域网内的文件传输
VB 一个Function传回多个值
在VB中实现多线程
VB 手机号码编码程序


技术教程 -> VB教程 ->  
如何用VB获得Windows各类系统目录
来源:转载   人气:824   录入时间:2007-11-8
     现在有很多关于如何用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)。
   
   程序代码如下:
   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
   




Copyright(C)2007-2025 广州市佳沛数码科技有限公司 版权所有
公司地址: 广州市荔湾区东漖北路560号511室
电话:020-81803473 传真:020-81544987