Renommer un lecteur virtuel - SetVolumeLabel_ dans l'impasse
Publié : lun. 06/août/2012 21:32
Je crée quelques procedures pour windows utilisant les API, je cherche à renommer un Lecteur virtuel.
Un volume classique (c:\ par exemple) se renomme facilement avec l'API SetVolumeLabel_.
En revanche, lorsque je crée un lecteur virtuel, celui ci prend le nom du volume ou se trouve la cible.
Si par exemple Je veux attribuer K: à D:\codesPB\ et que D: se nomme "DATAS", le lecteur K va prendre le nom de DATAS aussi.
Je souhaiterai donc modifier ce nom de volume mais SetVolumeLabel_ ne semble pas fonctionner avec un lecteur virtuel
Si l'un de vous a la solution je le remercie d'avance.
Un volume classique (c:\ par exemple) se renomme facilement avec l'API SetVolumeLabel_.
En revanche, lorsque je crée un lecteur virtuel, celui ci prend le nom du volume ou se trouve la cible.
Si par exemple Je veux attribuer K: à D:\codesPB\ et que D: se nomme "DATAS", le lecteur K va prendre le nom de DATAS aussi.
Je souhaiterai donc modifier ce nom de volume mais SetVolumeLabel_ ne semble pas fonctionner avec un lecteur virtuel
Code : Tout sélectionner
Procedure AddVirtualDrive(Lettre.s, Chemin.s, Nom_du_volume.s = "VolVirtuel")
; Ar-S
Protected.q Resultat, Resultat1
Lettre = UCase(Lettre)
; Quelques vérifs s'imposent
Resultat1 = FileSize(Lettre + ":\")
If Resultat1 = -1 ; Si la lettre n'est pas déjà utilisée
Resultat = FileSize(Chemin)
If Resultat = -2 ; Si la cible est bien un répertoire
;Création du volume virtuel
DefineDosDevice_(0,Lettre + ":",Chemin)
; Changement du nom du volume
SetVolumeLabel_(Lettre + ":\", Nom_du_volume) ; Ne marche pas !
ProcedureReturn 1
Else
MessageRequester( " Erreur", " La cible du lecteur virtuel doit être un dossier !" , #PB_MessageRequester_Ok|#MB_ICONEXCLAMATION )
ProcedureReturn 0
EndIf
Else
MessageRequester( " Erreur", " La lettre '"+ Lettre + "' semble être déjà utilisée !" , #PB_MessageRequester_Ok|#MB_ICONEXCLAMATION )
ProcedureReturn 0
EndIf
EndProcedure
AddVirtualDrive("K", "E:\un chemin existant\", "CODES")
; Pour virer le lecteur créé
; DefineDosDevice_(#DDD_REMOVE_DEFINITION ,"K" + ":",0)