This code will simulate Network Neighborhood using two combos.
One for the Active Domains and another for the Active Computers
in the selected Domain combo. Maybe it will help you get closer to
a solution.

VB Code:
  1. 'IN A MODULE
  2. Option Explicit
  3.  
  4. Public Type SERVER_INFO_100
  5.     sv100_platform_id As Long
  6.     sv100_name As Long
  7. End Type
  8.  
  9. Public Const SV_TYPE_DOMAIN_ENUM         As Long = &H80000000
  10. Public Const SV_TYPE_ALL                 As Long = &HFFFFFFFF
  11. Public Const MAX_PREFERRED_LENGTH As Long = -1
  12. Public Const NERR_SUCCESS As Long = 0&
  13. Public Const ERROR_REQ_NOT_ACCEP = 71&
  14. Public Const ERROR_MORE_DATA As Long = 234&
  15. Public Const NERR_BASE = 2100
  16. Public Const NERR_InvalidComputer = (NERR_BASE + 251)
  17.  
  18. Public Declare Function NetServerEnum Lib "netapi32" (ByVal servername As Long, ByVal level As Long, buf As Any, _
  19. ByVal prefmaxlen As Long, entriesread As Long, totalentries As Long, ByVal servertype As Long, ByVal domain As Long, _
  20. resume_handle As Long) As Long
  21.  
  22. Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pTo As Any, uFrom As Any, ByVal lSize As Long)
  23.    
  24. Public Declare Function NetApiBufferFree Lib "netapi32" (ByVal Buffer As Long) As Long
  25.  
  26. Public Declare Function lstrlenW Lib "kernel32" (ByVal lpString As Long) As Long
  27.  
  28. Public Function GetServers(sDomain As String, sType As Long) As String()
  29.  
  30.     Dim bufptr          As Long
  31.     Dim dwEntriesread   As Long
  32.     Dim dwTotalentries  As Long
  33.     Dim dwResumehandle  As Long
  34.     Dim se100           As SERVER_INFO_100
  35.     Dim success         As Long
  36.     Dim nStructSize     As Long
  37.     Dim Cnt             As Long
  38.    
  39.     nStructSize = LenB(se100)
  40.     success = NetServerEnum(0&, 100, bufptr, MAX_PREFERRED_LENGTH, dwEntriesread, dwTotalentries, sType, StrPtr(sDomain), dwResumehandle)
  41.     'success = 71 'NO ACTIVE 'DOMAIN'
  42.     If success = NERR_SUCCESS And success <> ERROR_MORE_DATA Then
  43.         Dim compNames() As String
  44.         ReDim compNames(dwEntriesread)
  45.         For Cnt = 0 To dwEntriesread - 1
  46.             CopyMemory se100, ByVal bufptr + (nStructSize * Cnt), nStructSize
  47.             compNames(Cnt) = GetPointerToByteStringW(se100.sv100_name)
  48.             DoEvents
  49.         Next
  50.     End If
  51.     Call NetApiBufferFree(bufptr)
  52.     GetServers = compNames
  53.    
  54. End Function
  55.  
  56. Public Function GetPointerToByteStringW(ByVal dwData As Long) As String
  57.  
  58.     Dim tmp() As Byte
  59.     Dim tmplen As Long
  60.    
  61.     If dwData <> 0 Then
  62.         tmplen = lstrlenW(dwData) * 2
  63.         If tmplen <> 0 Then
  64.             ReDim tmp(0 To (tmplen - 1)) As Byte
  65.             CopyMemory tmp(0), ByVal dwData, tmplen
  66.             GetPointerToByteStringW = tmp
  67.         End If
  68.     End If
  69.    
  70. End Function
  71.  
  72. 'BEHIND A FORM WITH TWO COMBOS (cboDomain AND cboComputer)
  73. Private Sub Form_Load()
  74.  
  75.     Dim compNames() As String
  76.     Dim x As Integer
  77.  
  78.     'SETUP THE DOMAIN COMBO BOX
  79.     compNames = GetServers(vbNullString, SV_TYPE_DOMAIN_ENUM)
  80.     For x = LBound(compNames) To UBound(compNames) - 1
  81.         cboDomain.AddItem compNames(x)
  82.     Next
  83.     cboDomain.ListIndex = 0
  84.  
  85. End Sub
  86.  
  87. Private Sub cboDomain_Click()
  88.     'NEED TO CLEAR CBOCOMPUTER AND RELOAD WITH COMPUTERS IN THE NEWLY SELECTED DOMAIN
  89.     'SETUP THE COMPUTER COMBO BOX
  90.     On Error GoTo No_Bugs
  91.    
  92.     Dim compNames() As String
  93.     Dim x As Integer
  94.    
  95.     cboComputer.Clear
  96.     x = 0
  97.     compNames = GetServers(cboDomain.Text, SV_TYPE_ALL)
  98.     If UBound(compNames) > 0 Then
  99.         For x = LBound(compNames) To UBound(compNames) - 1
  100.             cboComputer.AddItem compNames(x)
  101.         Next
  102.         cboComputer.ListIndex = 0
  103.     End If
  104.     Exit Sub
  105.    
  106. No_Bugs:
  107.     If Err.Number = "9" Then
  108.         cboDomain.RemoveItem (cboDomain.ListIndex)
  109.         cboDomain.ListIndex = 0
  110.         compNames = GetServers(cboDomain.Text, SV_TYPE_ALL)
  111.         Resume
  112.     Else
  113.         MsgBox Err.Number & " - " & Err.Description, vbOKOnly + vbExclamation, App.ProductName
  114.     End If
  115.    
  116. End Sub