Récupération du répertoire de windows

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 957 fois - Téléchargée 69 fois

Contenu du snippet

Pour ne pas mettre en dur le répertoire c:\winnt ou c:\windows
dans vos programmes, utilisez plutôt cette routine qui récupére
le répertoire d'installation de Windows !!

Source / Exemple :


' API pour la récupération répertoire Windows,
Private Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long

'-------------------------------------------
' Récupération du répertoire Windows
'
' Création : webcyril - Février 2001
'-------------------------------------------
Function PRGetRepertoireWindows() As String
    Dim WindowsDir As String
    
    WindowsDir = String$(255, " ")
    ' récupération du répertoire d'installation de Windows par API
    GetWindowsDirectory WindowsDir, Len(WindowsDir)
    WindowsDir = RTrim$(WindowsDir)
    WindowsDir = Left$(WindowsDir, Len(WindowsDir) - 1)
    PRGetRepertoireWindows = WindowsDir
End Function

A voir également

Ajouter un commentaire

Commentaires

z980x
Messages postés
898
Date d'inscription
jeudi 6 juin 2002
Statut
Membre
Dernière intervention
26 juillet 2007
2 -
Juste pour les mecs qui savent pas comment récupérer le chemin:

Msgbox PRGetRepertoireWindows

(Je sais, "tout le monde connait", mais ca peut toujours aider)
F2E
Messages postés
2
Date d'inscription
mardi 3 février 2004
Statut
Membre
Dernière intervention
26 août 2006
-
Merci de votre aide. Par la connaissance de cette API, je suis moins idiot !
yomm
Messages postés
515
Date d'inscription
dimanche 17 février 2002
Statut
Membre
Dernière intervention
10 mars 2008
2 -
juste histoire d'optimiser ton code :

' API pour la récupération répertoire Windows,
Private Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long

'-------------------------------------------
' Récupération du répertoire Windows
'
' Création : webcyril - Février 2001 feat. yomm
'-------------------------------------------
Function PRGetRepertoireWindows() As String
Dim WindowsDir As String * 255
Dim Longueur as Integer

' récupération du répertoire d'installation de Windows par API
Longueur = GetWindowsDirectory(WindowsDir, Len(WindowsDir))
PRGetRepertoireWindows = Left(WindowsDir, Longueur)

End Function
cs_thigo
Messages postés
44
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
15 juin 2006
-
Merci pour ce code que j'ai trouver facile à utiliser

A+
y manke pa la source ???

Option Explicit

Private Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long

Private Const gintMAX_SIZE% = 255 ' Taille maximum de la mémoire tampon
Private Const gstrNULL$ = "" ' Chaîne vide
Private Const gstrSEP_DIR$ = "" ' Séparateur de dossier
Private Const gstrSEP_URLDIR$ = "/" ' Séparateur séparant les dossiers dans les adresses URL.

'-----------------------------------------------------------
' FONCTION: GetWindowsDir
'
' Appelle une fonction API de Windows API pour obtenir le
' dossier et s'assure que le séparateur de dossier est présent
' en fin de ligne.
'
' Renvoie: Le dossier de Windows.
'-----------------------------------------------------------
'
Public Function GetWindowsDir() As String
Dim strBuf As String

strBuf = Space$(gintMAX_SIZE)

'
' Obtient le dossier de Windows et ajuste le tampon à la
' longueur exacte renvoyée, et ajoute un séparateur de
' dossier (barre oblique inverse) si l'API n'a rien renvoyé.
'
If GetWindowsDirectory(strBuf, gintMAX_SIZE) > 0 Then
strBuf = StripTerminator$(strBuf)
AddDirSep strBuf

GetWindowsDir = strBuf
Else
GetWindowsDir = gstrNULL
End If
End Function

'-----------------------------------------------------------
' FONCTION: GetWindowsSysDir
'
' Appelle une fonction API de Windows pour obtenir le dossier
' système de Windows et s'assure que le dernier séparateur
' de dossier est ajouté.
'
' RENVOIE: le dossier système de Windows.
'-----------------------------------------------------------
'
Public Function GetWindowsSysDir() As String
Dim strBuf As String

strBuf = Space$(gintMAX_SIZE)

'
' Obtient le dossier système et ajuste le tampon à la longueur
' exacte renvoyée, et ajoute un séparateur de dossier (barre
' oblique inverse) si l'API n'a rien renvoyé.
'
If GetSystemDirectory(strBuf, gintMAX_SIZE) > 0 Then
strBuf = StripTerminator(strBuf)
AddDirSep strBuf

GetWindowsSysDir = strBuf
Else
GetWindowsSysDir = gstrNULL
End If
End Function

'-----------------------------------------------------------
' FONCTION: StripTerminator
'
' Renvoie une chaîne sans aucun zéro à la fin. En général,
' il s'agit d'une chaîne renvoyée par un appel à une API de
' Windows.
'
' ENTRÉE: [strString] - la chaîne dans laquelle sont supprimés les zéros.
'
' Renvoie: La valeur de la chaîne passée, moins les zéros de la fin.
'-----------------------------------------------------------
'
Private Function StripTerminator(ByVal strString As String) As String
Dim intZeroPos As Integer

intZeroPos = InStr(strString, Chr$(0))
If intZeroPos > 0 Then
StripTerminator = Left$(strString, intZeroPos - 1)
Else
StripTerminator = strString
End If
End Function

'-----------------------------------------------------------
' PROCÉDURE: AddDirSep
' Ajoute un séparateur de chemin de dossier (barre oblique
' inverse) à la fin de la ligne, sauf s'il y en a déjà un.
'
' ENTRÉE/SORTIE: [strPathName] - chemin où ajouter le séparateur.
'-----------------------------------------------------------
'
Private Sub AddDirSep(strPathName As String)
If Right(Trim(strPathName), Len(gstrSEP_URLDIR)) <> gstrSEP_URLDIR And _
Right(Trim(strPathName), Len(gstrSEP_DIR)) <> gstrSEP_DIR Then
strPathName = RTrim$(strPathName) & gstrSEP_DIR
End If
End Sub

(de lexemple dinstall)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.