Hit-Parade .VB Research Center . Compteur
Accueil ~  Code ~  Programmes ~  Api ~  Forum ~  Cours ~  Livres ~  Quiz ~  Annuaire
~ Edito ~
12/03/2006 @ 13:39
Depuis la dernière mise à jour (qui remonte à... oulala plusieurs mois), un petit ménage de printemps s'impose. Ca tombe bien, c'est presque la période.
Au menu, et progressivement sur les jours à venir, rafraîchissement de plusieurs fonctions et procédures, nouvelles APIs et nouveaux programmes.

~ Rechercher ~

  

~ Annuaire VB ~
 Rechercher un site :
  

~ Partenaires ~

Procédure : PrepareRep
Pour créer un chemin complet de répertoire (s'il n'existe pas) tout en conservant les règles de sécurité de Windows.
(Consulté 2263 fois.)

' Déclaration des fonctions API utilisées.
Private Declare Function CreateDirectory Lib "kernel32" Alias "CreateDirectoryA" ( _
               
ByVal lpPathName As String, lpSecurityAttributes As SECURITY_ATTRIBUTES) As Long
Private Declare Function
SetCurrentDirectory Lib "kernel32" Alias "SetCurrentDirectoryA" ( _
               
ByVal lpPathName As String) As Long
Private Declare Function
GetCurrentDirectory Lib "kernel32" Alias "GetCurrentDirectoryA" ( _
               
ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long

' Déclaration du type utilisé.
Private Type SECURITY_ATTRIBUTES
    nLength
As Long
   
lpSecurityDescriptor As Long
   
bInheritHandle As Long
End Type

Public Sub
PrepareRep(stRep As String)
' Cette procédure permet de créer le chemin complet donné en paramètre.
Dim lgDepRep As Long, stDepRep As String
Dim
lgWhile As Long
' Type Sécurité de la base de registres.
Dim lpAttr As SECURITY_ATTRIBUTES

lgDepRep = 512
stDepRep = Space$(511)
' Mémorise le répertoire courant.
lgWhile = GetCurrentDirectory(lgDepRep, stDepRep)
stDepRep = Left$(stDepRep, lgWhile)

' Affecte les valeurs par défaut des attributs de sécurité.
lpAttr.nLength = 50
lpAttr.lpSecurityDescriptor = 0
lpAttr.bInheritHandle =
True

' Initialise la fin de la chaîne.
If Right$(stRep, 1) <> "\" Then stRep = stRep & "\"
' Repère le départ du premier répertoire.
lgWhile = InStr(4, stRep, "\")
Do While (lgWhile > 0)
   
' Vérifie l'existence du répertoire en se positionnant à l'intérieur.
   
lgDepRep = SetCurrentDirectory(Left$(stRep, lgWhile))
   
If lgDepRep = 0 Then
       
' Crée le répertoire.
       
CreateDirectory Left$(stRep, lgWhile), lpAttr
   
End If
   
lgWhile = InStr(lgWhile + 1, stRep, "\")
Loop
' Retourne sur le répertoire courant d'origine.
SetCurrentDirectory stDepRep
End Sub

Visual Basic Research Center - (c) 2000/2002 -  Webmaster : docvb (chez) free (point) fr