Mes documents

sisi231 Messages postés 207 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 29 mars 2013 - 24 févr. 2006 à 11:02
sisi231 Messages postés 207 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 29 mars 2013 - 24 févr. 2006 à 23:42
Bonjour,

je voudrais savoir comment retrouver par API Win32 le chemin du dossier " Mes Documents" et tant que vous y êtes m^me question pour "Mes Images".

Merci !

SISI231

6 réponses

sisi231 Messages postés 207 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 29 mars 2013 5
24 févr. 2006 à 11:59
C'est bon !
J'ai trouvé moi-même la réponse !
Voici la solution pour ceux pour qui la question intéresserait :

Tutorial "Comment faire" :
http://www.phidels.com/php/index.php3?page=../php/pagetelechargementzip.php3&id=84

Autre tut' plus complet :
http://delphi.developpez.com/faq/?page=repertoire#specialdirectory

Une référence des paramètres complète :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/enums/csidl.asp

SISI231
0
Matt 261 Messages postés 1173 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 10 septembre 2011 3
24 févr. 2006 à 12:06
Pas la peine de poser la question pour trouver la réponse 1heure plus tard...
0
sisi231 Messages postés 207 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 29 mars 2013 5
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
0
sisi231 Messages postés 207 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 29 mars 2013 5
24 févr. 2006 à 12:39
à noter qu'il faudra déclarer les constantes :

const
CSIDL_COMMON_DOCUMENTS =$002e;
CSIDL_PROGRAM_FILES =$0026;

qui ne sont pas dans le source de l'unité ShlObj (dans ma version du moins (Delphi 6)).

Si ça aura servi à qqn d'autres dîtes-le moi SVP !

SISI231
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sisi231 Messages postés 207 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 29 mars 2013 5
24 févr. 2006 à 12:44
Euh pardon :

CSIDL_COMMON_PICTURES = $0036;// Mes Images

et non :

CSIDL_PROGRAM_FILES =$0026;

Désolé !

SISI231
0
sisi231 Messages postés 207 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 29 mars 2013 5
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.

SISI231
0
Rejoignez-nous