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

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 srw 的 blog

我的主页: 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


本文关键:如何取得某些特殊文件夹路径
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top