Page 1 sur 1

Renommer un lecteur virtuel - SetVolumeLabel_ dans l'impasse

Publié : lun. 06/août/2012 21:32
par Ar-S
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

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)
Si l'un de vous a la solution je le remercie d'avance.