首页 > 学院 > 开发设计 > 正文

如何取得某些特殊文件夹路径

2019-11-18 17:58:14
字体:
来源:转载
供稿:网友

我的主页: http://www.tommstudio.com/

   在Windows 下有很多的特殊含义的文件夹,如桌面,网上邻居,字体,我的文档,
程序组,最近文档,发送到,开始菜单,启动等,有时可能需要取得这些文件夹
的真正路径。
一种方法是通过读注册表文件,存放在HKEY_CURRENT_USER根下,目录为:
Software/MicroSoft/Windows/CurrentVersion/Explorer
可看到在shell folder段中存放着上述文件夹所对应的实际物理目录,至于如何
读注册表的操作不再给出,请自行解决。
另一种方法是调用shell函数可以得到相应的目录,但是不是所有在shell folder
目录下的文件夹都可以获得,请注意。


function GetSpecialFolderDir(const folderid:integer):string;
var
pidl:pItemIDList;
buffer:array [ 0..255 ] of char ;
begin
  //取指定的文件夹项目表
    SHGetSpecialFolderLocation( application.Handle , folderid, pidl);
  SHGetPathFromIDList(pidl, buffer);    //转换成文件系统的路径
    result:=strpas(buffer);
end;


其中:folderid可以取下面的值:但是请注意,有些是虚的文件夹,不是文件系统
的一部分,所以用SHGetPathFromIDList是取不出路径的,但是在此也列出了。打'*'
号的为不是真正的文件系统,应该用作它用。


CSIDL_BITBUCKET         *   回收站
CSIDL_CONTROLS          *   控制面板
CSIDL_DESKTOP           *   桌面
CSIDL_DESKTOPDIRECTORY      桌面目录       //如C:/WINDOWS/Desktop
CSIDL_DRIVES            *   我的电脑
CSIDL_FONTS                 字体           //如C:/WINDOWS/FONTS
CSIDL_NETHOOD               网上邻居目录   //如C:/WINDOWS/NetHood
CSIDL_NETWORK           *   网上邻居
CSIDL_PERSONAL              我的文档       //如C:/My Documents
CSIDL_PRINTERS          *   打印机
CSIDL_PROGRAMS              程序组         //如C:/WINDOWS/Start Menu/Programs
CSIDL_RECENT                最近文档       //如C:/WINDOWS/Recent
CSIDL_SENDTO                发送到         //如C:/WINDOWS/SentTo
CSIDL_STARTMENU             开始菜单       //如C:/WINDOWS/Start Menu
CSIDL_STARTUP               启动           //如C:/WINDOWS/启动
CSIDL_TEMPLATES             模版           //如C:/WINDOWS/ShellNew




上一篇:url编码与解码工具代码

下一篇:控件在运行状态改变大小

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
学习交流
热门图片

新闻热点

疑难解答

图片精选

网友关注