Common dialog et voisinage réseau

Soyez le premier à donner votre avis sur cette source.

Snippet vu 7 617 fois - Téléchargée 47 fois

Contenu du snippet

Ce code permet l'ouverture des boîtes de connexion et de fermeture d'un lecteur réseau

Source / Exemple :


Vous pouvez utiliser les API suivantes :
Public Declare Function WNetConnectionDialog Lib "mpr.dll" _
                        (ByVal hwnd As Long, _
                         ByVal dwType As Long) As Long
   
Public Declare Function WNetDisconnectDialog Lib "mpr.dll" _
                        (ByVal hwnd As Long, _
                         ByVal dwType As Long) As Long

Elles permettent l'affichage de la boîte de connexion et de déconnexion d'un lecteur réseau.Une recherche dans la librairie MSDN donne comme résultat :

Specifies a bitmask that gives the resource type.
Currently, this member can be one of the following values: 
RESOURCETYPE_ANY All resources 
RESOURCETYPE_DISK Disk resources 
RESOURCETYPE_PRINT Print resources 
...dans la définition de la structure NETRESOURCE :
This structure that holds the network resource data. It is returned during enumeration of resources on the network and during enumeration of currently connected resources. 

La section HOWTO: List Local Network Connections with WNetEnumResources contient :
      Public Const RESOURCE_CONNECTED = &H1
      Public Const RESOURCE_GLOBALNET = &H2
      Public Const RESOURCE_REMEMBERED = &H3

      Public Const RESOURCETYPE_ANY = &H0
      Public Const RESOURCETYPE_DISK = &H1
      Public Const RESOURCETYPE_PRINT = &H2
      Public Const RESOURCETYPE_UNKNOWN = &HFFFF

      Public Const RESOURCEUSAGE_CONNECTABLE = &H1
      Public Const RESOURCEUSAGE_CONTAINER = &H2
      Public Const RESOURCEUSAGE_RESERVED = &H80000000

Il est exact que la définition exhaustive de ces constantes n'est présente nulle part dans MSDN. Merci Microsoft ;-

A voir également

Ajouter un commentaire Commentaires
Messages postés
26
Date d'inscription
mardi 17 juin 2003
Statut
Membre
Dernière intervention
3 juillet 2009

Entier c mieux ( source http://support.microsoft.com/kb/177697)
Merci Microsoft ;-


1. Créez un nouveau projet et ajoutez le code suivant au formulaire : Option Explicit

Private Const GMEM_FIXED = &H0
Private Const GMEM_ZEROINIT = &H40
Private Const GPTR = (GMEM_FIXED Or GMEM_ZEROINIT)

Private Declare Function GlobalAlloc Lib "KERNEL32" ( _
ByVal wFlags As Long, ByVal dwBytes As Long) As Long
Private Declare Function GlobalFree Lib "KERNEL32" ( _
ByVal hMem As Long) As Long

Private Declare Sub CopyMemory Lib "KERNEL32" Alias "RtlMoveMemory" _
(hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)

Private Declare Function CopyPointer2String Lib "KERNEL32" _
Alias "lstrcpyA" ( _
ByVal NewString As String, ByVal OldString As Long) As Long

Private Sub Form_click()
Dim hEnum As Long, lpBuff As Long, nr As NETRESOURCE
Dim cbBuff As Long, cCount As Long
Dim p As Long, res As Long, i As Long

'Setup the NETRESOURCE input structure.
nr.dwUsage = RESOURCEUSAGE_CONTAINER
nr.lpRemoteName = 0
cbBuff = 1000
cCount = &HFFFFFFFF

'Open a Net enumeration operation handle: hEnum.
res = WNetOpenEnum(RESOURCE_CONNECTED, RESOURCETYPE_ANY, _
0, nr, hEnum)
If res = 0 Then
'Create a buffer large enough for the results.
'1000 bytes should be sufficient.
lpBuff = GlobalAlloc(GPTR, cbBuff)
'Call the enumeration function.
res = WNetEnumResource(hEnum, cCount, lpBuff, cbBuff)
If res = 0 Then
p = lpBuff
Cls
'WNetEnumResource fills the buffer with an array of
'NETRESOURCE structures. Walk through the list and print
'each local and remote name.
For i = 1 To cCount
CopyMemory nr, ByVal p, LenB(nr)
p = p + LenB(nr)
Print PointerToString(nr.lpLocalName), _
PointerToString(nr.lpRemoteName)
Next i
Else
MsgBox "Error: " & Err.LastDllError, vbOKOnly, _
"WNetEnumResources"
End If
If lpBuff <> 0 Then GlobalFree (lpBuff)
WNetCloseEnum (hEnum) 'Close the enumeration
Else
MsgBox "Error: " & Err.LastDllError, vbOKOnly, "WNetOpenEnum"
End If
End Sub

Private Function PointerToString(p As Long) As String
'The values returned in the NETRESOURCE structures are pointers to
'ANSI strings so they need to be converted to Visual Basic
Strings.
Dim s As String
s = String(255, Chr$(0))
CopyPointer2String s, p
PointerToString = Left(s, InStr(s, Chr$(0)) - 1)
End Function



2. Ajoutez un nouveau module au projet et ajoutez le code suivant : Option Explicit

Public Type NETRESOURCE
dwScope As Long
dwType As Long
dwDisplayType As Long
dwUsage As Long
lpLocalName As Long
lpRemoteName As Long
lpComment As Long
lpProvider As Long
End Type

Public 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

Public Declare Function WNetEnumResource Lib "mpr.dll" Alias _
"WNetEnumResourceA" ( _
ByVal hEnum As Long, _
lpcCount As Long, _
ByVal lpBuffer As Long, _
lpBufferSize As Long) As Long

Public Declare Function WNetCloseEnum Lib "mpr.dll" ( _
ByVal hEnum As Long) As Long

'RESOURCE ENUMERATION.
Public Const RESOURCE_CONNECTED = &H1
Public Const RESOURCE_GLOBALNET = &H2
Public Const RESOURCE_REMEMBERED = &H3

Public Const RESOURCETYPE_ANY = &H0
Public Const RESOURCETYPE_DISK = &H1
Public Const RESOURCETYPE_PRINT = &H2
Public Const RESOURCETYPE_UNKNOWN = &HFFFF

Public Const RESOURCEUSAGE_CONNECTABLE = &H1
Public Const RESOURCEUSAGE_CONTAINER = &H2
Public Const RESOURCEUSAGE_RESERVED = &H80000000
Messages postés
43
Date d'inscription
lundi 31 décembre 2001
Statut
Membre
Dernière intervention
5 février 2005

C'est l'API WNetAddConnection2
Messages postés
13
Date d'inscription
jeudi 15 juin 2000
Statut
Membre
Dernière intervention
20 juillet 2004

ben ben :) mais comment faire cela en auto ? (sans avoir a saisir le nom utilisateur et le mot de passe si ceux ci sont mémoriser avant ???)

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.