N As Long = &HFFFF&
Private Const RESOURCEUSAGE_ALL As Long = &H0&
Private Const RESOURCEUSAGE_CONNECTABLE As Long = &H1&
Private Const RESOURCEUSAGE_CONTAINER As Long = &H2&
Private Const RESOURCEUSAGE_RESERVED As Long = &H80000000
Private Const NO_ERROR = 0
Private Const ERROR_MORE_DATA = 234
Private Const RESOURCE_ENUM_ALL As Long = &HFFFF
' 枚举信息数据类型
Private Type NETRESOURCE
dwScope As Long ' 枚举的范围
dwType As Long ' 枚举的类型
dwDisplayType As Long ' 资源的类型
dwUsage As Long ' 枚举的用法
sLocalName As String ' 由本地系统引用的资源名称
sRemoteName As String ' 资源的网络名
sComment As String ' 由网络供应商设置
sProvider As String ' 网络供应商的名字
End Type
' 自定义类型存放枚举信息
Private Type
NETRESOURCE_BUF
dwScope As Long ' 枚举的范围
dwType As Long ' 枚举的类型
dwDisplayType As Long ' 资源的类型
dwUsage As Long ' 枚举的用法
pLocalName As Long ' 由本地
系统引用的资源名称
pRemoteName As Long ' 资源的
网络名
pComment As Long ' 由网络供应商设置
pProvider As Long ' 网络供应商的名字
End Type
' 获得网上邻居计算机名称的子
程序 Sub GetNeighbor()
Const MAX_RESOURCES = 256
Const NOT_A_CONTAINER = -1
Dim bFirstTime As Boolean
Dim lReturn As Long
Dim hEnum As Long
Dim lCount As Long
Dim lMin As Long
Dim lLength As Long
Dim l As Long
Dim lBufferSize As Long
Dim lLastIndex As Long
Dim uNetApi(0 To MAX_RESOURCES) As NETRESOURCE_BUF
Dim uNet() As NETRESOURCE
bFirstTime = True
Do
If bFirstTime Then
' 启动对顶级网络资源进行枚举的过程,并返回枚举资源所用的句柄
lReturn = WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, RESOURCEUSAGE_ALL, ByVal 0&, hEnum)
bFirstTime = False
Else
' 如果uNet(lLastIndex)资源包含了可以枚举的额外资源,并返回枚举资源所用的句柄
If uNet(lLastIndex).dwUsage And RESOURCEUSAGE_CONTAINER Then
' 启动对包含于指定资源内的资源的枚举
lReturn = WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, RESOURCEUSAGE_ALL, uNet(lLastIndex), hEnum)
Else '否则
lReturn = NOT_A_CONTAINER
hEnum = 0
End If