Le chemin d'accès vers Mes Documents sous XP

pablo79 Messages postés 12 Date d'inscription samedi 2 mars 2002 Statut Membre Dernière intervention 22 décembre 2004 - 2 mars 2002 à 17:37
ShanaBurns Messages postés 30 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 30 mai 2003 - 31 mars 2002 à 21:18
Je voudrais savoir si quelqu'un pourrait m'aider...

Voilà, je voudrais savoir le chemin d'accès de mes documents sous Win XP. Comme certains utilisateurs utilisent une session, le dossier ne ce trouvera pas forcément sous Allusers dans Documents and Settings, mais sou leur username.

Comment faire pour que quand l'utilisateur de mon programme veuille choisir un fichier depuis un dirlistbox, ce dernier soit configuré pour regarder dans Mes Documents ???

Merci d'avance !

p@blo79

3 réponses

Neo.balastik Messages postés 796 Date d'inscription jeudi 17 mai 2001 Statut Membre Dernière intervention 5 mai 2009 7
4 mars 2002 à 09:05
0
ShanaBurns Messages postés 30 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 30 mai 2003
31 mars 2002 à 05:03
Voici un facon précise d'aller chercher l'emplacement de mes documents de l'utilisateur courant.
C'est en passant par le registry (regedit)
voici la syntaxe vb pour le faire simplement.

Private Const REG_SZ = 1 'Le type de la valeur que tu veux avoir (un type de string)

HKEY_CURRENT_USER = &H80000001 'C'est la que sont tout les infos de l'utilisateur courant

'Voici les trois api pour lire des donner dans le registry

Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long

Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, ByVal lpData As String, lpcbData As Long) As Long ' Note that if you declare the lpData parameter as String, you must pass it By Value.

Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long


'tu te declare une variable long qui contiendra le handle du registry que tu aura ouvert
dim rHandle as long
dim Rep as string 'La string dans laquel tu mettra le chemin pour mes document

tu ouvre le registry avec RegOpenKey sur le current user a l'emplacement de la valeur que tu veux. Elle ce trouve dans "Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders". En lui passant ta variable handle biensure
Retour = RegOpenKey( HKEY_CURRENT_USER , "Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", rHandle)

'si ca fonctionne ca va te retourner 0 dans (Retour pour le cas ici)
if Return =0 then
LenRep = 260 'La longeur max de la reponse
Rep = Space(LenRep) 'Set la reponse vide, juste pour avoir la bonne grandeur de variable

'Maintenant tu lit la valeur dans le registry (Personal c le nom de la cle qui contient le chemin d'acces a mes documents
Retour = RegQueryValueEx(rHandle, "Personal", 0, REG_SZ, ByVal Rep, LenRep)

'bon maintenant si ca pas marcher tu doit fermer le registry toi meme.
if Retour <> 0 then
RegCloseKey rHandle
else
'Si ca marcher tu coupe la string apres la fin du chemin d'acces (voici une petite facon de faire ca tu le fin comme tu veux tant que ca marche)
Rep = IIf(InStr(Rep, Chr(0)) <> 0, Left(Rep, InStr(Rep, Chr(0)) - 1), RTrim(Rep))
end if
end if

Eh.. voila le tour et jouer tu as le chemin d'acces exact pour le dossier mes document de l'utilisateur courant peut importe qui il est.

Ca peut parraitre long comme code mais c tres tres rapide a executer, a cause que tu ne fait que jouer avec des api.

Bon j'espere que je t'ai pas trop perdu et que ca va pouvoir t'aider.
-------
PS. Pour les api qui le font directement je sais pas si y en a une. Bon y a bien un api pour le repertoire systeme file et windows, mais pour mes Document, le destop, le start menu et autre du style, j'en connais pas.
Alors si quelqu'un en connais une je serais bien contente de savoir c quoi.
0
ShanaBurns Messages postés 30 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 30 mai 2003
31 mars 2002 à 21:18
oups oublier une petite chose..
normalement tu devrais fermer le handle pour le registry quand tu en a fini avec

donc ne pas oublier de faire
RegCloseKey rHandle a la fin
0
Rejoignez-nous