sisi231
Messages postés207Date d'inscriptionmercredi 5 mars 2003StatutMembreDernière intervention29 mars 20135 24 févr. 2006 à 12:16
Matt 261 : Désolé, je ne savais pas que je trouverais si vite...
Pour ceux qui seraient intéressés :
Voici les fonctions :
function GetMesDocuments : string;
var
IdList:PITEMIDLIST;
Dossier:array[0..MAX_PATH] of Char;
begin
if SHGetSpecialFolderLocation(0,CSIDL_COMMON_DOCUMENTS,IdList)=NOERROR then
begin
SHGetPathFromIDList(IdList, Dossier);// pour récupérer le dossier à partir de IdList
result:=String(Dossier);
end
else result:='';
end;
function GetMesImages : string;
var
IdList:PITEMIDLIST;
Dossier:array[0..MAX_PATH] of Char;
begin
if SHGetSpecialFolderLocation(0,CSIDL_COMMON_PICTURES,IdList)=NOERROR then
begin
SHGetPathFromIDList(IdList, Dossier);// pour récupérer le dossier à partir de IdList
result:=String(Dossier);
end
else result:='';
end;
sisi231
Messages postés207Date d'inscriptionmercredi 5 mars 2003StatutMembreDernière intervention29 mars 20135 24 févr. 2006 à 23:42
Encore désolé ce n'était pas cela (car cela sont les documents de tous les utilisateurs et non le dossier de l'utilisateur courant) voici donc la méthode finale qui marche (je la montre pour Mes Documents) :
1 : ajoutez après la clause USES :
const
CSIDL_PERSONAL =$0005;
Function SHGetFolderPath( hwndOwner:HWND;
nFolder:integer;
hToken:integer;
dwFlags:DWORD;
pszPath:LPTSTR
):HRESULT; stdcall; external 'shell32.dll' name 'SHGetFolderPathA';
puis récupérez Mes Documents par la fonction :
function GetMesDocuments : string;
var
szpath:array[0..MAX_PATH] of Char;
begin
if SHGetFolderPath(0,CSIDL_PERSONAL,0,0,szpath)=NOERROR then
result:=string(szpath)
else
result:='';
end;
J'ai trouvé cette méthode grâce à la référence de la MSDN et ai adapté le code pour Delphi.