برای گرفتن لیست فایل ها اول باید آدرس پوشه Desktop کاربر رو به دست بیارید که میتونید از تابع زیر استفاده کنید :
function GetDeskTopPath : string;
var
shellMalloc: IMalloc;
ppidl: PItemIdList;
PerDir: string;
begin
ppidl := nil;
try
if SHGetMalloc(shellMalloc) = NOERROR then
begin
SHGetSpecialFolderLocation(Form1.Handle, CSIDL_DESKTOP, ppidl);
SetLength(Result, MAX_PATH);
if not SHGetPathFromIDList(ppidl, PChar(Result)) then
raise exception.create('SHGetPathFromIDList failed : invalid pidl');
SetLength(Result, lStrLen(PChar(Result)));
end;
finally
if ppidl <> nil then
shellMalloc.free(ppidl);
end;
end;
کتابخانه ActiveX و ShlObj رو به Uses اضافه کنید و بعد به صورت زیر لیست فایل ها و پوشه های موجود تو اون رو به دست بیارید :
var
S: TSearchRec;
begin
if FindFirst(GetDeskTopPath+'\*.*', faAnyFile, S)=0 then
repeat
Memo1.Lines.Add(S.Name);
until (FindNext(S)<> 0);
FindClose(S);
end;
اگر از دلفی 2009 یا 2010 استفاده میکنید میتونید از توابع کتابخانه IOUtils برای به دست آوردن لیست فایل ها استفاده کنید .