如何得到“桌面”及其下的子目录?(200分)

  • 主题发起人 主题发起人 luo521
  • 开始时间 开始时间
L

luo521

Unregistered / Unconfirmed
GUEST, unregistred user!
资源管理器中“文件夹”界面:最上层是“桌面”,然后是“我的电脑”、驱动器A、C、D...;
 
用 DELPHI6.0 自带的控件 TShellTreeView 。
或用其它控件。
 
如果我要用TShellTreeView我就不问了
 
有两种方法,一是用API:
uses
ShlObj;

function GetSysSPFolderPath(id: Integer): string;
var
s: string;
pIdList: PItemIDList;
begin
if SHGetSpecialFolderLocation(0, id, pIdList) = NOERROR then
begin
SetLength(s, MAX_PATH + 1);
SHGetPathFromIDList(pIdList, PChar(s));
Result := PChar(s);
end
else
Result := '';
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
Caption := GetSysSPFolderPath(CSIDL_DESKTOP);
end;

另一个是查注册表:
const
RegRoot = '/Software/Microsoft/Windows/CurrentVersion/Explorer/Shell Folders/';

with TRegistry.Create do
begin
try
if OpenKey(RegRoot, False) then
begin
Caption := ReadString('Desktop');
end;
finally
Free;
end;
end;
 
取得路径之后怎么做就不用我再说了吧? [:)]
用FindFirst, FindNext有论坛或GOOGLE上查找一下,一堆现成的
 
后退
顶部