现在有很多关于如何用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、

原文摘自:http://www.ltesting.net/html/52/n-56852.html

相关文章参考:

※利用VB函数Dir()实现递归搜索目录

※VB获取windows各常用目录的函数(模块)

※怎样用VB获得Windows各类系统目录

※VB判断文件及目录的存在性

※谈vb目录文件操作的三种方法-1

※谈vb目录文件操作的三种方法-2

※VB 使用SendMessage枚举文件与目录


VB部分相关文章推荐

※VB快速读取 TextBox 第 N 行的资料

※VB禁止使用 Alt-Tab 或 Ctrl-Alt-Del

※生成迷宫的程序

※另一方法转换大小写

※VB控件注册 - 利用资源文件将dll、ocx打包进exe文件

※VB利用资源文件进行工作

※[转]vb高效编程(优化)

※VB阳历转阴历

※纯VB代码取得硬盘的物理序列号

※VB获得磁盘的文件系统

※做VB的,经常注册和反注册OCX控件和DLL链

※VB从程序中生成Exe文件

※VB6监视/操作剪贴板示例(VB6.0代码)

※VB6里自动提交/自动填表的一种相对通用的方案

※VB移动没有标题的窗体

※VB随机字母的函数

※VB删除带子文件夹和文件的文件夹

※VB怎样屏蔽 Alt+F4键

※VB 隐藏进程

※vb屏蔽文本框点右键时的弹出菜单

※VB手控Combobox的打开或收起

※在VB中INI文件的读写、删除(对中文支持很好)

※vb全局热键的写法(占很少的资源)

※vb取消文本框的粘贴功能

※VB常用文件操作类

※VB获取特殊文件夹

※VB获取windows各常用目录的函数(模块)

※VB生成太极图

※VB:常用内部函数大全,你会了几个呢?

※vb中SendMessage函数

※精简VB程序的代码

※VB:将数字转换为大写中文

※VB:设定 MsgBox 在若干时间之后若无回应则自动关闭

※VB:读取及设定NumLock/CapsLock/ScrollLock的值

※VB:您知道 Mid$ 函量可以放在 '=' 的左方吗

※VB后台获得按键,并执行自己的函数(非钩子及热键)

※VB:将短文件名格式转成长文件名

※在vb中使用Iphlpapi.dll获取网络信息(上)

※在vb中使用Iphlpapi.dll获取网络信息(下)

更多精彩>>>

怎样用VB获得Windows各类系统目录相关推荐

  1. VB获取windows各常用目录的函数(模块)

            以下的函数,可以用来获取windows 诸如"windows.temp.sendto.desktop.开始菜单" 等目录. -------------------- ...

  2. VB无所不能之三:VB截获Windows消息的钩子

    为什么80%的码农都做不了架构师?>>>    本文地址:http://blog.csdn.net/useway <Java程序员,上班那点事儿> --作者:钟声 VB一 ...

  3. WINDOWS基础 ---- 系统目录

    今天学习内容就是windows的系统目录啦啦~~ 好久没有写blog,有些些鸡冻** 在这里分别写每个系统目录的名称以及其主要功能 ProgramData 功能:存放应用程序的配置文件,其为隐藏目录, ...

  4. VB获取Windows操作系统所有版本

    '**************************************************************************** '人人为我,我为人人 '枕善居汉化收藏整理 ...

  5. VB 与 Windows API 讲座(叁)转载

    code demo download VB 与 Windows API 讲座(叁) Windows 的讯息系统 /王国荣 VB 程式有两种工作模式-主动模式及事件驱动模式,主动模式与传统的 DOS 程 ...

  6. VB中windows API StretchBlt,BitBlt的应用

    VB中windows API StretchBlt,BitBlt的应用 1.BitBlt函数 函数原型:Declare Function BitBlt Lib "gdi32" _ ...

  7. VB 与 Windows API 讲座(一) /王国荣

    进入 Windows API 的热身运动 「VB 没有提供这样的功能, 必须呼叫 Windows API」, 有时候笔者会这样回答读者的问题, 虽然这麽回答有点偷懒, 或者说不负责任, 但这的确是事实 ...

  8. VB 使用SendMessage枚举文件与目录

    源码如下: Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (By ...

  9. ※部分VB文章汇总A※

    编前篇 ★微软公告:Visual Basic 6 完全兼容 Windows 8 的整个产品周期 ★Visual Basic 十年风云 ★微软 Small Basic 简体中文版 已经发布了 ★VB:如 ...

最新文章

  1. Swift 值类型和引用类型的内存管理
  2. intellij打开工程在每个java文件上有个红色的无效符的解决办法
  3. HTML5 之前的视频播放格式
  4. SAP License:煤化工企业现场调研感想
  5. 降序排序_排序简单,应用不易,使用Excel排序的几点建议
  6. 2013计算机二级试题,2013年3月全国计算机二级VFP真题
  7. 编译 framework.jar包
  8. 牛皮!竟然有大佬基于 Spring Boot + Vue 开发了一套网易云QQ音乐(附源码)。。。...
  9. serve注解是加在哪个类_PHP 8新特性之Attributes(注解)
  10. CMMI3—CMMI5认证的详细流程
  11. 3年!我收获了22条ICEM使用经验与网格划分错误分析
  12. numpy库的安装方法
  13. 中国有34个省市自治区(342个市)
  14. openflow交换机 ryu_ryu—交换机
  15. 天津全国计算机等级考试考点,2018年下半年全国计算机等级考试报考简章及天津考点安排...
  16. 易语言大漠一键登录实现自动输入账号密码
  17. 电脑系统故障维修,系统C盘满了怎么办?教你c盘清理方法
  18. Mac 苹果系统没有WIFI选项自检出现-1005D
  19. debian无法使用ifconfig
  20. ​互链半年报 | 区块链平台应用落地哪家强?阿里系第一,迅雷、平安紧随

热门文章

  1. 遇冷的斗鱼直播,还“斗”得动吗?| 畅言
  2. 陆奇技术入局拼多多,拼多多能否摆脱“五环外”?
  3. @程序员,京东面试官让你谈谈注册中心的问题!
  4. 抢占朋友圈C位 闪耀世界杯 就要Pick 腾讯云CDN
  5. 开发者如何区分 5G 和 LTE 技术?
  6. 绝杀《绝地求生》外挂!
  7. 开发者容易陷入的 50 大误区!
  8. 加密货币大崩盘:第一季度最大跌幅高达 88%!
  9. 360 快视频疑似盗取 B 站数据,暂无最新回应
  10. android onscrolllistener判断到底部,android中RecycleView添加下滑到底部的监听示例