获取常用的路径

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1
= class(TForm)
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

uses ShlObj; {SHGetSpecialFolderLocation、SHGetPathFromIDList 函数来自这个单元}

{获取常用路径的函数}
function GetPath(FID: Integer): string;
var
pidl: PItemIDList;
path:
array[0..MAX_PATH] of Char;
begin
SHGetSpecialFolderLocation(
0, FID, pidl);
SHGetPathFromIDList(pidl, path);
Result :
= path;
end;

{测试时, 我把 SHGetSpecialFolderLocation 函数需要的参数定义成了一个常数数组}
const
arr:
array[0..57] of Integer = (
CSIDL_DESKTOP ,
{ = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = { = {测试}3e }3d }3b }3a }39 }38 }37 }36 }35 }31 }30 }2f }2e }2d }2c }2b }2a }29 }28 }27 }26 }25 }24 }23 }22 }21 }20 }1f }1e }1d }1c }1b }1a }19 }18 }17 }16 }15 }14 }13 }12 }11 }10 }0e }0d }0c }0b }0a }09 }08 }07 }06 }05 }04 }03 }02 }01 }00 }
CSIDL_INTERNET , ___
2
CSIDL_PROGRAMS , ___
2
CSIDL_CONTROLS , ___
2
CSIDL_PRINTERS , ___
2
CSIDL_PERSONAL , ___
2
CSIDL_FAVORITES , ___
2
CSIDL_STARTUP , ___
2
CSIDL_RECENT , ___
2
CSIDL_SENDTO , ___
2
CSIDL_BITBUCKET , ___
2
CSIDL_STARTMENU , ___
2
CSIDL_MYDOCUMENTS , ___
2
CSIDL_MYMUSIC , ___
2
CSIDL_MYVIDEO , ___
2
CSIDL_DESKTOPDIRECTORY , ___
2
CSIDL_DRIVES , ___
2
CSIDL_NETWORK , ___
2
CSIDL_NETHOOD , ___
2
CSIDL_FONTS , ___
2
CSIDL_TEMPLATES , ___
2
CSIDL_COMMON_STARTMENU , ___
2
CSIDL_COMMON_PROGRAMS , ___
2
CSIDL_COMMON_STARTUP , ___
2
CSIDL_COMMON_DESKTOPDIRECTORY , ___
2
CSIDL_APPDATA , ___
2
CSIDL_PRINTHOOD , ___
2
CSIDL_LOCAL_APPDATA , ___
2
CSIDL_ALTSTARTUP , ___
2
CSIDL_COMMON_ALTSTARTUP , ___
2
CSIDL_COMMON_FAVORITES , ___
2
CSIDL_INTERNET_CACHE , ___
2
CSIDL_COOKIES , ___
2
CSIDL_HISTORY , ___
2
CSIDL_COMMON_APPDATA , ___
2
CSIDL_WINDOWS , ___
2
CSIDL_SYSTEM , ___
2
CSIDL_PROGRAM_FILES , ___
2
CSIDL_MYPICTURES , ___
2
CSIDL_PROFILE , ___
2
CSIDL_SYSTEMX86 , ___
2
CSIDL_PROGRAM_FILESX86 , ___
2
CSIDL_PROGRAM_FILES_COMMON , ___
2
CSIDL_PROGRAM_FILES_COMMONX86 , ___
2
CSIDL_COMMON_TEMPLATES , ___
2
CSIDL_COMMON_DOCUMENTS , ___
2
CSIDL_COMMON_ADMINTOOLS , ___
2
CSIDL_ADMINTOOLS , ___
2
CSIDL_CONNECTIONS , ___
2
CSIDL_COMMON_MUSIC , ___
2
CSIDL_COMMON_PICTURES , ___
2
CSIDL_COMMON_VIDEO , ___
2
CSIDL_RESOURCES , ___
2
CSIDL_RESOURCES_LOCALIZED , ___
2
CSIDL_COMMON_OEM_LINKS , ___
2
CSIDL_CDBURN_AREA , ___
2
CSIDL_COMPUTERSNEARME , ___
2
CSIDL_PROFILES ___
2
);

___
2
procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
s:
string;
begin
Memo1.Clear;
for i := 0 to Length(Arr) - 1 do
begin
s :
= GetPath(Arr[i]);
if s<>'' then Memo1.Lines.Add(Format('%d:'#9'%s', [Arr[i], s]));
end;
end;

end.

posted @ 2011-07-09 21:19  斥也  阅读(142)  评论(0)    收藏  举报