K

- Base de connaissances

Accueil > API WINDOWS > SetCurrentDirectory

SetCurrentDirectory

jeudi 29 juillet 2010, par webmestre

Fichier DLL : kernel32.dll

Prototype VB6/VBA :

Declare Function SetCurrentDirectory Lib "kernel32" Alias "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long

Prototype VB.NET :

 

Description :
Cette fonction sert à modifier le répertoire courant sur lequel est positionné l’application.
lpPathName est le chemin complet du répertoire à créer.
La valeur Vrai est retournée par la fonction si la modification s’est correctement effectuée, sinon False.

Exemple d’utilisation :

' 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

Répondre à cet article

Plan du site | Suivre la vie du site RSS 2.0 | powered by NYSTEK-EDITIONS and NYSTEK-CONSULTING