Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

RÉCUPÉRER LE NOM UNC EN VB5/6


Information sur la source

Catégorie :API Niveau : Initié Date de création : 17/06/2003 Date de mise à jour : 17/06/2003 10:12:25 Vu : 3 190

Note :
3,67 / 10 - par 3 personnes
3,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note

Description

Cette routine permet, sous VB5/VB6 de récupérer le chemin UNC d'un lecteur réseau passé en paramètre.
 

Source

  • Private Declare Function WNetOpenEnum Lib "mpr.dll" Alias "WNetOpenEnumA" (ByVal dwScope As Long, ByVal dwType As Long, ByVal dwUsage As Long, lpNetResource As Any, lphEnum As Long) As Long
  • Private Declare Function WNetEnumResource Lib "mpr.dll" Alias "WNetEnumResourceA" (ByVal hEnum As Long, lpcCount As Long, ByVal lpBuffer As Long, lpBufferSize As Long) As Long
  • Private Declare Function WNetCloseEnum Lib "mpr.dll" (ByVal hEnum As Long) As Long
  • Private Declare Function WNetGetConnection Lib "mpr.dll" Alias "WNetGetConnectionA" (ByVal lpszLocalName As String, ByVal lpszRemoteName As String, cbRemoteName As Long) As Long
  • Private Declare Function PathIsNetworkPath Lib "shlwapi.dll" Alias "PathIsNetworkPathA" (ByVal pszPath As String) As Long
  • Private Declare Function PathIsUNC Lib "shlwapi.dll" Alias "PathIsUNCA" (ByVal pszPath As String) As Long
  • Private Declare Function PathStripToRoot Lib "shlwapi.dll" Alias "PathStripToRootA" (ByVal pPath As String) As Long
  • Private Declare Function PathSkipRoot Lib "shlwapi.dll" Alias "PathSkipRootA" (ByVal pPath As String) As Long
  • Private Declare Function CopyPointer2String Lib "kernel32" Alias "lstrcpyA" (ByVal NewString As String, ByVal OldString As Long) As Long
  • Private Declare Function CopyString2Pointer Lib "kernel32" Alias "lstrcpyA" (ByVal NewString As Long, ByVal OldString As String) As Long
  • Public Declare Function lstrcpy Lib "kernel32" Alias "lstrcpyA" (ByVal lpString1 As String, ByVal lpString2 As Any) As Long
  • Private Declare Function lstrlenW Lib "kernel32" (ByVal lpString As Long) As Long
  • Private Declare Function lstrlenA Lib "kernel32" (ByVal Ptr As Any) As Long
  • Public Function GetUNCFullPathFromMappedDrive(pLocalName As String) As String
  • Dim sLocalRoot As String
  • Dim sRemoteName As String
  • Dim sRemotePath As String
  • Dim cbRemoteName As Long
  • sRemoteName = Space(255)
  • cbRemoteName = Len(sRemoteName)
  • sLocalRoot = StripPathToRoot(pLocalName)
  • sRemotePath = StripRootFromPath(pLocalName)
  • If IpPathNetPath(sLocalRoot) Then
  • If WNetGetConnection(sLocalRoot, sRemoteName, cbRemoteName) = ERROR_SUCCESS Then
  • sRemoteName = QualifyPath(TrimNull(sRemoteName)) & sRemotePath
  • If IsUNCPathValid(sRemoteName) Then GetUNCFullPathFromMappedDrive = sRemoteName
  • End If
  • End If
  • End Function
  • Public Function QualifyPath(pPath As String) As String
  • If Right(pPath, 1) <> "\" Then
  • QualifyPath = pPath & "\"
  • Else
  • QualifyPath = pPath
  • End If
  • End Function
  • Private Function IpPathNetPath(ByVal pPath As String) As Boolean
  • 'Vérifie que pPath est bien un chemin réseau
  • IpPathNetPath = PathIsNetworkPath(pPath) = 1
  • End Function
  • Private Function IsUNCPathValid(ByVal pPath As String) As Boolean
  • 'Vérifie que pPath est bien un UNC valide
  • IsUNCPathValid = PathIsUNC(pPath) = 1
  • End Function
  • Private Function StripPathToRoot(ByVal pPath As String) As String
  • 'Garde uniquement la lettre de l'unité de pPath
  • Dim pos As Long
  • Call PathStripToRoot(pPath)
  • pos = InStr(pPath, Chr(0))
  • If pos Then
  • StripPathToRoot = Left(pPath, pos - 2)
  • Else
  • StripPathToRoot = pPath
  • End If
  • End Function
  • Private Function TrimNull(pStartPos As String) As String
  • TrimNull = Left(pStartPos, lstrlenW(StrPtr(pStartPos)))
  • End Function
  • Private Function StripRootFromPath(ByVal pPath As String) As String
  • 'Renvoie l'arborescence sous la lettre correspondant au mappage
  • StripRootFromPath = TrimNull(GetStrFromPtrA(PathSkipRoot(pPath)))
  • End Function
  • Private Function GetStrFromPtrA(ByVal pPointerA As Long) As String
  • 'Renvoie la chaîne correspondant au pointeur passé en paramètre
  • GetStrFromPtrA = String(lstrlenA(ByVal pPointerA), 0)
  • Call CopyPointer2String(ByVal GetStrFromPtrA, ByVal pPointerA)
  • End Function
Private Declare Function WNetOpenEnum Lib "mpr.dll" Alias "WNetOpenEnumA" (ByVal dwScope As Long, ByVal dwType As Long, ByVal dwUsage As Long, lpNetResource As Any, lphEnum As Long) As Long
Private Declare Function WNetEnumResource Lib "mpr.dll" Alias "WNetEnumResourceA" (ByVal hEnum As Long, lpcCount As Long, ByVal lpBuffer As Long, lpBufferSize As Long) As Long
Private Declare Function WNetCloseEnum Lib "mpr.dll" (ByVal hEnum As Long) As Long
Private Declare Function WNetGetConnection Lib "mpr.dll" Alias "WNetGetConnectionA" (ByVal lpszLocalName As String, ByVal lpszRemoteName As String, cbRemoteName As Long) As Long
Private Declare Function PathIsNetworkPath Lib "shlwapi.dll" Alias "PathIsNetworkPathA" (ByVal pszPath As String) As Long
Private Declare Function PathIsUNC Lib "shlwapi.dll" Alias "PathIsUNCA" (ByVal pszPath As String) As Long
Private Declare Function PathStripToRoot Lib "shlwapi.dll" Alias "PathStripToRootA" (ByVal pPath As String) As Long
Private Declare Function PathSkipRoot Lib "shlwapi.dll" Alias "PathSkipRootA" (ByVal pPath As String) As Long
Private Declare Function CopyPointer2String Lib "kernel32" Alias "lstrcpyA" (ByVal NewString As String, ByVal OldString As Long) As Long
Private Declare Function CopyString2Pointer Lib "kernel32" Alias "lstrcpyA" (ByVal NewString As Long, ByVal OldString As String) As Long
Public Declare Function lstrcpy Lib "kernel32" Alias "lstrcpyA" (ByVal lpString1 As String, ByVal lpString2 As Any) As Long
Private Declare Function lstrlenW Lib "kernel32" (ByVal lpString As Long) As Long
Private Declare Function lstrlenA Lib "kernel32" (ByVal Ptr As Any) As Long

Public Function GetUNCFullPathFromMappedDrive(pLocalName As String) As String
   Dim sLocalRoot As String
   Dim sRemoteName As String
   Dim sRemotePath As String
   Dim cbRemoteName As Long
   
   sRemoteName = Space(255)
   cbRemoteName = Len(sRemoteName)
   
   sLocalRoot = StripPathToRoot(pLocalName)
   sRemotePath = StripRootFromPath(pLocalName)
   
   If IpPathNetPath(sLocalRoot) Then
      If WNetGetConnection(sLocalRoot, sRemoteName, cbRemoteName) = ERROR_SUCCESS Then
         sRemoteName = QualifyPath(TrimNull(sRemoteName)) & sRemotePath
         If IsUNCPathValid(sRemoteName) Then GetUNCFullPathFromMappedDrive = sRemoteName
      End If
   End If
End Function

Public Function QualifyPath(pPath As String) As String
   If Right(pPath, 1) <> "\" Then
         QualifyPath = pPath & "\"
   Else
        QualifyPath = pPath
    End If
End Function

Private Function IpPathNetPath(ByVal pPath As String) As Boolean
  'Vérifie que pPath est bien un chemin réseau
   IpPathNetPath = PathIsNetworkPath(pPath) = 1
End Function

Private Function IsUNCPathValid(ByVal pPath As String) As Boolean
  'Vérifie que pPath est bien un UNC valide
   IsUNCPathValid = PathIsUNC(pPath) = 1
End Function

Private Function StripPathToRoot(ByVal pPath As String) As String
  'Garde uniquement la lettre de l'unité de pPath
   Dim pos As Long
   
   Call PathStripToRoot(pPath)
   
   pos = InStr(pPath, Chr(0))
   If pos Then
        StripPathToRoot = Left(pPath, pos - 2)
   Else
        StripPathToRoot = pPath
   End If
End Function

Private Function TrimNull(pStartPos As String) As String
   TrimNull = Left(pStartPos, lstrlenW(StrPtr(pStartPos)))
End Function

Private Function StripRootFromPath(ByVal pPath As String) As String
  'Renvoie l'arborescence sous la lettre correspondant au mappage
   StripRootFromPath = TrimNull(GetStrFromPtrA(PathSkipRoot(pPath)))
End Function

Private Function GetStrFromPtrA(ByVal pPointerA As Long) As String
  'Renvoie la chaîne correspondant au pointeur passé en paramètre
   GetStrFromPtrA = String(lstrlenA(ByVal pPointerA), 0)
   Call CopyPointer2String(ByVal GetStrFromPtrA, ByVal pPointerA)
End Function

Commentaires et avis

Aucun commentaire pour le moment.

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,250 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.