如何得到桌面文件所在的路径?包括98,2000
如何得到桌面文件所在的路径?包括98,2000 问题点数:30、回复次数:4Top
1 楼lxpbuaa(桂枝香在故国晚秋)回复于 2002-11-21 21:06:41 得分 0
var
P: PChar;
S: String;
begin
GetMem(P,MAX_PATH);
GetWindowsDirectory(P,MAX_PATH);
S := P;
FreeMem(P);
S := S + '\Desktop';
ShowMessage(S);
end;
—————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
—————————————————————————————————Top
2 楼sypxl()回复于 2002-11-22 08:48:06 得分 0
lxpbuaa(桂枝香在故国晚秋):你的只能得到98的吧?!有没有其他的方式?
不同的系统,桌面文件的存放的路径不一样的吧!NT和2000,98,xpTop
3 楼bluebilly(蓝色天使)回复于 2002-11-22 09:59:16 得分 30
方法一:通过访问注册表
uses registry;
procedure Tsysdirfrm.FormShow(Sender: TObject);
var reg:Tregistry;
begin
reg:=Tregistry.create;
reg.RootKey:=HKEY_USERS;
reg.OpenKey('\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders',false);
listbox1.items.add(reg.readstring('Desktop')) ;//桌面目录
listbox1.items.add(reg.readstring('Fonts'));//字体目录
listbox1.items.add(reg.readstring('NetHood')) ;//网上邻居
listbox1.items.add(reg.readstring('Personal'));//我的文档目录
listbox1.items.add(reg.readstring('Programs'));//开始菜单程序目录
listbox1.items.add(reg.readstring('Recent')) ;//存放用户最近访问文件快捷方式的目录
listbox1.items.add(reg.readstring('SendTo'));//发送到目录
listbox1.items.add(reg.readstring('Start Menu'));//开始菜单目录
listbox1.items.add(reg.readstring('Startup'));//开始菜单启动项目录
listbox1.items.add(reg.readstring('Favorites')) ;//收藏夹目录
listbox1.items.add(reg.readstring('History'));//网页历史目录
listbox1.items.add(reg.readstring('Cookies'));//cookies目录
listbox1.items.add(reg.readstring('Cache')) ;//缓存目录
listbox1.items.add(reg.readstring('AppData'));//应用程序数据目录
listbox1.items.add(reg.readstring('PrintHood')) ;//打印目录
reg.CloseKey ;
reg.free;
end;
方法二:使用API函数SHGetSpecialFolderLocation和SHGetPathFromIDList
uses shlobj;
procedure TForm1.Button1Click(Sender: TObject);
var pidl: PItemIDList;
FavPath: array[0..MAX_PATH] of char;
temp:array [1..17] of integer; i:byte;
begin
temp[1]:=CSIDL_DESKTOP; //桌面
temp[2]:=CSIDL_DESKTOPDIRECTORY ; //桌面目录
temp[3]:=CSIDL_FONTS ; //字体目录
temp[4]:=CSIDL_NETHOOD ; //网络邻居
temp[5]:=CSIDL_PERSONAL ; //我的文档目录
temp[6]:=CSIDL_PROGRAMS ; //开始菜单程序目录
temp[7]:=CSIDL_RECENT ; //存放用户最近访问文件快捷方式的目录
temp[8]:=CSIDL_SENDTO ; //"发送到"目录
temp[9]:=CSIDL_STARTMENU ; //开始菜单目录
temp[10]:=CSIDL_STARTUP ; //开始菜单启动项目录
temp[11]:=CSIDL_FAVORITES ; //收藏夹目录
for i:=1 to 17 do
begin
SHGetSpecialFolderLocation(Handle, temp[i], pidl);
SHGetPathFromIDList(pidl, favpath);
listbox1.Items.Add(StrPas(FavPath));
end;
end;Top
4 楼Linux2001(闭关开发中)回复于 2002-11-22 10:01:43 得分 0
有一个专门的API可以获得这些特殊目录Top




