Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private 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
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 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
Public Function DoNetEnum(list As Object) As Boolean
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
On Error Resume Next
list.AddItem " "
list.Clear
If Err.Number > 0 Then Exit Function
res = WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, NR, hEnum)
If res = 0 Then
lpBuff = GlobalAlloc(GPTR, cbBuff)
res = WNetEnumResource(hEnum, cCount, lpBuff, cbBuff)
If res = 0 Then
p = lpBuff
For I = 1 To cCount
CopyMemory NR, ByVal p, LenB(NR)
'list.AddItem "Network Name " & PointerToString(NR.lpRemoteName)
DoNetEnum2 NR, list
p = p + LenB(NR)
Next I
End If
DoNetEnum = True
ErrorHandler:
On Error Resume Next
If lpBuff <> 0 Then GlobalFree (lpBuff)
WNetCloseEnum (hEnum)
End If
End Function
Private Function PointerToString(p As Long) As String
Dim s As String
s = String(255, Chr$(0))
CopyPointer2String s, p
PointerToString = Left(s, InStr(s, Chr$(0)) - 1)
End Function
Private Sub DoNetEnum2(NR As NETRESOURCE, list As Object)
Dim hEnum As Long, lpBuff As Long
Dim cbBuff As Long, cCount As Long
Dim p As Long, res As Long, I As Long
If res = 0 Then
lpBuff = GlobalAlloc(GPTR, cbBuff)
res = WNetEnumResource(hEnum, cCount, lpBuff, cbBuff)
If res = 0 Then
p = lpBuff
For I = 1 To cCount
CopyMemory NR, ByVal p, LenB(NR)
'list.AddItem "Network Computer #" & i & " " & PointerToString(NR.lpRemoteName)
list.AddItem PointerToString(NR.lpRemoteName)
p = p + LenB(NR)
Next I
End If
If lpBuff <> 0 Then GlobalFree (lpBuff)
WNetCloseEnum (hEnum)
End If
End Sub
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.