我只能得到98下的收藏夹路径,2K和XP的都不能得到,请高人指点一下,如何才能通用得到任意操作系统下的收藏夹路径。我的代码如下:function GetFavoritesPath : String;
var
reg : TRegistry;
begin
Result := '';
reg := TRegistry.Create;
try
with reg do
begin
RootKey:=HKEY_CURRENT_USER;
if OpenKey('Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders',false)=true then
Result:=ReadString('Favorites')+'\';
CloseKey;
end;
finally
reg.Free;
end;
end;
var
reg : TRegistry;
begin
Result := '';
reg := TRegistry.Create;
try
with reg do
begin
RootKey:=HKEY_CURRENT_USER;
if OpenKey('Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders',false)=true then
Result:=ReadString('Favorites')+'\';
CloseKey;
end;
finally
reg.Free;
end;
end;
解决方案 »
- TMS控件包中的Advstringgrid使用方法
- 身份证有效性规则该怎么做啊?
- 关于记录定位的问题
- 保存类对象数据
- 急,在线等,高手请进
- reportMachine3.0制作的报表,在98下正常,在2000下表头打印不出来,谁遇到过?
- 字符型的十六进制怎么转化为十进制
- 三层结构,数据库Sql server7.0中有张表的一个字段名为left.(left是sql server的关键字),客户端用ClientDataSet1->AppendRecord时就会
- Bitmap Style Designer不能改变字体大小
- 有谁看过《编程黑马真言》吗?怎么样?
- 求职,散分,100!
- QuickReport的打印问题,急!
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Registry, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
Reg: TRegistry;
deskpath:string;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CURRENT_USER;
if Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders', false) then
deskpath:=Reg.readString('Favorites');
showmessage(deskpath);
finally
Reg.CloseKey;
Reg.Free;
inherited;
end;
end;end.XP SP2+ D7调试通过
在加上‘\Documents and Settings\Administrator.MYHOME-HHBEE3K2\Favorites’
注意用户名的不同
另外用控件ShellTreeView1
双击该控件选定 Use Standard &Folder=rfFavorites
该控件的Path=收藏夹路径
主要就是XP和98下,收藏夹在注册表中的地址不一样
你看看
//取特殊文件夹目录
//----------------------------------------------------------------
unit ShlObjfunction 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;
//取收藏夹目录
//----------------------------------------------------------------function GetFavPath: string;
begin
result := GetSpecialFolderDir(CSIDL_FAVORITES);
end;
看看这里
http://search.csdn.net/Expert/topic/677/677348.xml?temp=.4862635