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.