Page 1 sur 1

[RESOLU] Chemin du répertoire de téléchargement utilisateur

Publié : jeu. 17/janv./2013 15:59
par falsam
Bonjour. GetTemporaryDirectory() permet de connaitre le chemin du répertoire temporaire d'un utilisateur mais j'aurais voulu connaitre le chemin du répertoire de téléchargement défini par un utilisateur.
Quelqu'un aurait il une réponse à me proposer ? Merci.

Re: Chemin du répertoire de téléchargement défini par un uti

Publié : jeu. 17/janv./2013 18:27
par Ar-S
En passant par la base de registre.

Code : Tout sélectionner

key.s = "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer"
Value.s = "Download Directory" 

la procédure de lecture du registre a été copiée, bidouillée, modifiée tellement de fois que je ne sais plus d’où celle ci sort (dobro, droopy ou une adaptation perso...)

Ce qui donne :

Code : Tout sélectionner

Procedure.s   ReadRegKey(OpenKey.l,SubKey.s,ValueName.s)  ; ====================================== ReadRegKey
  hKey.l=0
  KeyValue.s= Space (255)
  DataSize.l=255
  
  If RegOpenKeyEx_ (OpenKey,SubKey,0, #KEY_READ ,@hKey)
    KeyValue= ""
  Else
    If RegQueryValueEx_ (hKey,ValueName,0,0,@KeyValue,@DataSize)
      KeyValue= ""
    Else
      KeyValue= Left (KeyValue,DataSize-1)
    EndIf
    RegCloseKey_ (hKey)
  EndIf
  
  ProcedureReturn KeyValue
EndProcedure 


MessageRequester("TELECH",ReadRegKey(#HKEY_CURRENT_USER,"Software\Microsoft\Internet Explorer","Download Directory"))

Re: Chemin du répertoire de téléchargement défini par un uti

Publié : ven. 18/janv./2013 13:49
par GallyHC
Bonjour,

Il faudrais deja savoir si vous cherche le repertoire de telechargement des fichiers perso (dans mes docs avec par exemple MSN) ou celui d'IE.

dans tout les cas ce code peut vous aidez :

Code : Tout sélectionner

Procedure.s GetSystemFolder(lvalue.l)
;
  Protected sfolder.s
  Protected *itemid.ITEMIDLIST = #Null
  
  If SHGetSpecialFolderLocation_(0, lvalue, @*itemid) = #NOERROR
    sfolder = Space(#MAX_PATH)
    If SHGetPathFromIDList_ (*itemid, @sfolder)
      If Right(sfolder, 1) <> "\"
        sfolder + "\"
      EndIf
      ProcedureReturn sfolder
    EndIf
  EndIf

EndProcedure


For i=0 To 63
  Debug Str(i) + " - " + GetSystemFolder(i)
Next i
Après pour touver la constante (plus precise) qu'il vous faut, voir cette page "http://msdn.microsoft.com/en-us/library/aa453706.aspx"

Pour celui dans "mes docs", je n'ai rien trouvais. La seul solution que je vois actuellement, serais une recherche du répertoire perso et une analyse de l'existance de certain repertoire de chaque OS (WinXP, 7, ...). Car le nom que changer.

Deja dans 7 il y a au moin le fichier "Downloads" dans le profils et aussi "Mes fichiers reçus" dans le "profil + Documents", sans parle des fichier de IE.

Cordialement,
GallyHC

Re: Chemin du répertoire de téléchargement défini par un uti

Publié : ven. 18/janv./2013 14:49
par Ar-S
Si tu parles de "chemin de téléchargement défini par l'utilisateur", il est clair qu'il faut savoir définit depuis quel logiciel.
Si tu changes le chemins de ton dossier téléchargement via la bonne méthode, à savoir
Clique droit sur le dossier téléchargement puis onglet Emplacement et en indiquant un emplacement spécifique.
Ce nouvel emplacement sera, sous windows 8 x64, à la clé

Code : Tout sélectionner

;clé : HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
;valeur : {374DE290-123F-4565-9164-39C4925E467B}
;ce qui donne (testé et fonctionnel)

Procedure.s   ReadRegKey(OpenKey.l,SubKey.s,ValueName.s)  ; ====================================== ReadRegKey
	hKey.l=0
	KeyValue.s= Space (255)
	DataSize.l=255
	
	If RegOpenKeyEx_ (OpenKey,SubKey,0, #KEY_READ ,@hKey)
		KeyValue= ""
	Else
		If RegQueryValueEx_ (hKey,ValueName,0,0,@KeyValue,@DataSize)
			KeyValue= ""
		Else
			KeyValue= Left (KeyValue,DataSize-1)
		EndIf
		RegCloseKey_ (hKey)
	EndIf
	
	ProcedureReturn KeyValue
EndProcedure 


MessageRequester("TELECH",ReadRegKey(#HKEY_CURRENT_USER,"Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders","{374DE290-123F-4565-9164-39C4925E467B}"))

Re: Chemin du répertoire de téléchargement défini par un uti

Publié : ven. 18/janv./2013 15:12
par GallyHC
Bonjour Ar-s

Désolé de te dire que j'ai testé tes codes sur 7 et xp et perso je n'ai a chaque fois rien :(. Les clefs sont peu être spécifique a chaque OS (c'est une question car je n'ai pas la réponse)?

Cordialement,
GallyHC

PS: J'espère être dans le bon sens des questions, ni hors sujet (je me méfis maintenant) et surtout dans le BON TOPIC…

Re: Chemin du répertoire de téléchargement défini par un uti

Publié : ven. 18/janv./2013 15:32
par Ar-S
GallyHC a écrit :Bonjour Ar-s

Désolé de te dire que j'ai testé tes codes sur 7 et xp et perso je n'ai a chaque fois rien :(. Les clefs sont peu être spécifique a chaque OS (c'est une question car je n'ai pas la réponse)?

Cordialement,
GallyHC

PS: J'espère être dans le bon sens des questions, ni hors sujet (je me méfis maintenant) et surtout dans le BON TOPIC…
Regarde dans regedit à la clé (qui elle es tcommunes à tous les OS je pense)

Code : Tout sélectionner

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders 
si tu vois une le chemin du répertoire téléchargement dans les "valeurs" (à droite).

Re: Chemin du répertoire de téléchargement défini par un uti

Publié : ven. 18/janv./2013 16:20
par GallyHC
Bonjour,

Ben en fait non pour être plus précis je te met la liste des clefs que j'ai :

Code : Tout sélectionner

"AppData"="C:\\Documents and Settings\\MOI EN FAIT\\Application Data"
"Cookies"="C:\\Documents and Settings\\MOI EN FAIT\\Cookies"
"Desktop"="C:\\Documents and Settings\\MOI EN FAIT\\Bureau"
"Favorites"="C:\\Documents and Settings\\MOI EN FAIT\\Favoris"
"NetHood"="C:\\Documents and Settings\\MOI EN FAIT\\Voisinage réseau"
"Personal"="C:\\Documents and Settings\\MOI EN FAIT\\Mes documents"
"PrintHood"="C:\\Documents and Settings\\MOI EN FAIT\\Voisinage d'impression"
"Recent"="C:\\Documents and Settings\\MOI EN FAIT\\Recent"
"SendTo"="C:\\Documents and Settings\\MOI EN FAIT\\SendTo"
"Start Menu"="C:\\Documents and Settings\\MOI EN FAIT\\Menu Démarrer"
"Templates"="C:\\Documents and Settings\\MOI EN FAIT\\Modèles"
"Programs"="C:\\Documents and Settings\\MOI EN FAIT\\Menu Démarrer\\Programmes"
"Startup"="C:\\Documents and Settings\\MOI EN FAIT\\Menu Démarrer\\Programmes\\Démarrage"
"Local Settings"="C:\\Documents and Settings\\MOI EN FAIT\\Local Settings"
"Local AppData"="C:\\Documents and Settings\\MOI EN FAIT\\Local Settings\\Application Data"
"Cache"="C:\\Documents and Settings\\MOI EN FAIT\\Local Settings\\Temporary Internet Files"
"History"="C:\\Documents and Settings\\MOI EN FAIT\\Local Settings\\Historique"
"My Pictures"="C:\\Documents and Settings\\MOI EN FAIT\\Mes documents\\Mes images"
"Fonts"="C:\\WINDOWS\\Fonts"
"My Music"="C:\\Documents and Settings\\MOI EN FAIT\\Mes documents\\Ma musique"
"My Video"="C:\\Documents and Settings\\MOI EN FAIT\\Mes documents\\Mes vidéos"
"Administrative Tools"=""
je ne comprend pas non plus pourquoi je n'ai pas de clef comme tu l'as?


Cordialement,
GallyHC

Re: Chemin du répertoire de téléchargement défini par un uti

Publié : ven. 18/janv./2013 17:37
par Ar-S
Sous w7 ET Xp ???

Re: Chemin du répertoire de téléchargement défini par un uti

Publié : ven. 18/janv./2013 17:38
par GallyHC
La c sous XP

Re: Chemin du répertoire de téléchargement défini par un uti

Publié : ven. 18/janv./2013 17:42
par Ar-S
GallyHC a écrit :La c sous XP
Plus de chance qu'il y ait quelque chose sous 7
je n'ai plus WindowsXP mode sur windows 8, faut que je le réinstalle.

Re: Chemin du répertoire de téléchargement défini par un uti

Publié : ven. 18/janv./2013 23:18
par falsam
Merci pour ces réponses.

@AR-s : Ton code ci-dessous fonctionne sous windows 7 et répond à ma demande.

Code : Tout sélectionner

;clé : HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
;valeur : {374DE290-123F-4565-9164-39C4925E467B}
;ce qui donne (testé et fonctionnel)

Procedure.s   ReadRegKey(OpenKey.l,SubKey.s,ValueName.s)  ; ====================================== ReadRegKey
   hKey.l=0
   KeyValue.s= Space (255)
   DataSize.l=255
   
   If RegOpenKeyEx_ (OpenKey,SubKey,0, #KEY_READ ,@hKey)
      KeyValue= ""
   Else
      If RegQueryValueEx_ (hKey,ValueName,0,0,@KeyValue,@DataSize)
         KeyValue= ""
      Else
         KeyValue= Left (KeyValue,DataSize-1)
      EndIf
      RegCloseKey_ (hKey)
   EndIf
   
   ProcedureReturn KeyValue
EndProcedure 


MessageRequester("TELECH",ReadRegKey(#HKEY_CURRENT_USER,"Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders","{374DE290-123F-4565-9164-39C4925E467B}"))
@GallyHC : Merci pour ta réponse que je garde précieusement et tu es bien dans un topic consacré à des demandes d'aide. (Quel rancunier tu fais :p Mais c'est aussi pour ça que j'aime ce forum :) Merci.

Je vais afficher Résolu mais la discussion continue.

Re: [RESOLU] Chemin du répertoire de téléchargement utilisat

Publié : dim. 20/janv./2013 12:58
par GallyHC
@falsam > En fait ce n'est pas vraiment de rancune :) allez on fait comme si ce n'etes pas arrivé.

@Ar-s > ton code fonctionne sur 7.

Cordialement,
GallyHC