http://www.csdn.net/expert/topic/467/467412.shtm

解决方案 »

  1.   

    Private Declare Function WNetOpenEnum Lib "mpr.dll" Alias "WNetOpenEnumA" (ByVal dwScope As Long, ByVal dwType As Long, ByVal dwUsage As Long, lpNetResource As NETRESOURCE, lphEnum As Long) As Long
    Private Declare Function WNetEnumResource Lib "mpr.dll" Alias "WNetEnumResourceA" (ByVal hEnum As Long, lpcCount As Long, lpBuffer As Any, lpBufferSize As Long) As Long
    Private Declare Function WNetCloseEnum Lib "mpr.dll" (ByVal hEnum As Long) As LongPrivate Type NETRESOURCE
        dwScope As Long
        dwType As Long
        dwDisplayType As Long
        dwUsage As Long
        lpLocalName As String
        lpRemoteName As String
        lpComment As String
        lpProvider As String
    End TypePrivate Const RESOURCE_GLOBALNET = &H2& '用在WNetOpenEnum中的第一个参数,表示要枚举所有网络资源(包括已连接的和未连接的)
    Private Const RESOURCETYPE_ANY = &H0 '用在WNetOpenEnum中的第二个参数,表示要枚举所有资源(包括磁盘和打印机)
    Private Const RESOURCETYPE_DISK = &H1 '用在WNetOpenEnum中的第二个参数,表示要枚举所有磁盘(文件夹)资源
    Private Const RESOURCETYPE_PRINT = &H2 '用在WNetOpenEnum中的第二个参数,表示要枚举所有打印设备资源Public Function EnumDomain() As Boolean
    Dim NetS As NETRESOURCE
    Dim MaxDomain As Integer
    Dim Buf(1024) As Byte
    Dim TmpReturn As Long
    Dim TmpStr As String
    Dim hEnumReturn As Long
    Dim I As Integer
    TmpReturn = WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, NetS, hEnumReturn)
    If TmpReturn <> 0 Then '如果失败是话,退出函数
       EnumDomain = False
       Exit Function
    End IfTmpReturn = WNetEnumResource(hEnumReturn, -1, Buf(0), 1024)  'hEnmReturn是上面的语句得到的句柄
    Call WNetCloseEnum(hEnumReturn) 'hEnmReturn是上面的语句得到的句柄
    If TmpReturn <> 0 Then '如果失败是话,退出函数
       EnumDomain = False
       Exit Function
    End IfFor I = 1 To 1023 '处理缓冲区的数据
       '前面的200个字节是没有用的
        If Buf(I) <> "0" And Buf(I) <> Space(0) Then
           TmpStr = TmpStr & Chr(Val(Buf(I)))
      
        Else
        
         If TmpStr <> "" Then
          
           
           
           
           If Trim(TmpStr) = "Microsoft Network" Then
                      TmpStr = ""
           Else
              FrmMain.Combo_WorkGroup.AddItem TmpStr
              FrmMain.Combo_WorkGroup.Text = TmpStr
              TmpStr = ""
           End If
           
          End If
         
        End IfNext I
    EnumDomain = TrueEnd FunctionPrivate Sub CmdListWorkGroup_Click()
      FrmMain.Combo_WorkGroup.Clear
      EnumDomain
      If EnumDomain = False Then MsgBox "取得工作组失败!"
    End SubPublic Sub Combo_WorkGroup_Click()
    Me.List_ComputerName.Clear
    Dim NetS As NETRESOURCE
    'Dim MaxDomain As Integer
    Dim Buf(1024) As Byte
    Dim TmpReturn As Long
    Dim TmpStr As String
    Dim hEnumReturn As Long
    Dim I As Integer
    NetS.lpRemoteName = FrmMain.Combo_WorkGroup.Text
    TmpReturn = WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, NetS, hEnumReturn)
    If TmpReturn <> 0 Then '如果失败是话,退出函数
    '   EnumDomain = False
       Exit Sub
    End IfTmpReturn = WNetEnumResource(hEnumReturn, -1, Buf(0), 1024)
    If TmpReturn <> 0 Then '如果失败是话,退出函数
     '  EnumDomain = False
       Exit Sub
    End IfCall WNetCloseEnum(hEnumReturn)For I = 200 To 1023 '处理缓冲区的数据
        
        If Buf(I) <> "0" Then
           TmpStr = TmpStr & Chr(Val(Buf(I)))
        
        Else
        
         If TmpStr <> "" Then
           
           
           If Trim(TmpStr) = "Microsoft Network" Then
                      TmpStr = ""
           Else
               If Left(TmpStr, 2) = "\\" Then
               TmpStr = Mid(TmpStr, 3)
               FrmMain.List_ComputerName.AddItem TmpStr
               TmpStr = ""
               Else
               TmpStr = ""
               End If       End If
           
          End If
         
        End IfNext IEnd Sub
      

  2.   

    night_cai(菜烟虫)如果是已连接的机器,上面的代码就可以吗?参数该怎样变化。
      

  3.   

    night_cai(菜烟虫),首先非常感谢你!但运行之后,在combo1显示不出工作组
    显示:Q
         Microsoft Windows
         n 
         d
         o
         ...
    而且在list里没有任何信息。
    我知道这离成功只差一步,还希望你能关注,帮我解决,谢谢!
      

  4.   

    night_cai(菜烟虫):非常感谢你提供的代码,这不容在调试一下,希望这次能成功。