调用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
目录下的文件夹都可以获得,请注意。
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