Определение компьютеров в сети - VB

Узнай цену своей работы

Формулировка задачи:

Люди, подскажите пожалуйста как программно определить список компьютеров, которые сейчас в сети.

Решение задачи: «Определение компьютеров в сети»

textual
Листинг программы
  1. Const MAX_RESOURCES = 256
  2. Const NOT_A_CONTAINER = -1
  3.  
  4. Function StringFromPtr(Ptr As Long) As String
  5. Dim lLength As Long
  6.  
  7.     lLength = lstrlen(Ptr)
  8.     StringFromPtr = Space$(lLength)
  9.     CopyMem ByVal StringFromPtr, ByVal Ptr, lLength
  10. End Function
  11.  
  12. Public Sub EnumNetworks()
  13. Dim lRet As Long
  14. Dim hEnum As Long
  15. Dim lCount As Long
  16. Dim Ind As Long
  17. Dim lBufferSize As Long
  18. Dim uNet(0 To MAX_RESOURCES - 1) As NETRESOURCE
  19.  
  20.     lRet = WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK, RESOURCEUSAGE_ALL, ByVal 0&, hEnum)
  21.     If lRet = NO_ERROR Then
  22.         lCount = RESOURCE_ENUM_ALL
  23.         Do
  24.             lBufferSize = Len(uNet(0)) * MAX_RESOURCES
  25.             lRet = WNetEnumResource(hEnum, lCount, uNet(0), lBufferSize)
  26.             If lCount > 0 Then
  27.                 For Ind = 0 To lCount - 1
  28.                     If uNet(Ind).dwDisplayType = RESOURCEDISPLAYTYPE_NETWORK Then
  29.                         frmMain.lblNetwork = StringFromPtr(uNet(Ind).pRemoteName)
  30.                         DoEvents
  31.                         EnumDomains uNet(Ind)
  32.                     End If
  33.                 Next Ind
  34.             End If
  35.         Loop While lRet = ERROR_MORE_DATA
  36.     End If
  37.    
  38.     If hEnum Then WNetCloseEnum hEnum
  39. End Sub
  40.  
  41. Private Sub EnumDomains(ByRef Parent As NETRESOURCE)
  42. Dim lRet As Long
  43. Dim hEnum As Long
  44. Dim lCount As Long
  45. Dim Ind As Long
  46. Dim lBufferSize As Long
  47. Dim uNet(0 To MAX_RESOURCES - 1) As NETRESOURCE
  48.  
  49.     lRet = WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK, RESOURCEUSAGE_ALL, Parent, hEnum)
  50.     If lRet = NO_ERROR Then
  51.         lCount = RESOURCE_ENUM_ALL
  52.         Do
  53.             lBufferSize = Len(uNet(0)) * MAX_RESOURCES
  54.             lRet = WNetEnumResource(hEnum, lCount, uNet(0), lBufferSize)
  55.             If lCount > 0 Then
  56.                 For Ind = 0 To lCount - 1
  57.                     If uNet(Ind).dwDisplayType = RESOURCEDISPLAYTYPE_DOMAIN Then
  58.                         frmMain.lblDomain = StringFromPtr(uNet(Ind).pRemoteName)
  59.                         DoEvents
  60.                         EnumServers uNet(Ind)
  61.                     End If
  62.                 Next Ind
  63.             End If
  64.         Loop While lRet = ERROR_MORE_DATA
  65.     End If
  66.    
  67.     If hEnum Then WNetCloseEnum hEnum
  68. End Sub
  69.  
  70. Private Sub EnumServers(ByRef Parent As NETRESOURCE)
  71. Dim lRet As Long
  72. Dim hEnum As Long
  73. Dim lCount As Long
  74. Dim Ind As Long
  75. Dim lBufferSize As Long
  76. Dim uNet(0 To MAX_RESOURCES - 1) As NETRESOURCE
  77.  
  78. Dim Srv As String
  79.  
  80.     lRet = WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK, RESOURCEUSAGE_ALL, Parent, hEnum)
  81.     If lRet = NO_ERROR Then
  82.         lCount = RESOURCE_ENUM_ALL
  83.         Do
  84.             lBufferSize = Len(uNet(0)) * MAX_RESOURCES
  85.             lRet = WNetEnumResource(hEnum, lCount, uNet(0), lBufferSize)
  86.             If lCount > 0 Then
  87.                 For Ind = 0 To lCount - 1
  88.                     If uNet(Ind).dwDisplayType = RESOURCEDISPLAYTYPE_SERVER Then
  89.                         Srv = StringFromPtr(uNet(Ind).pRemoteName)
  90.                         frmMain.lblServer = Srv
  91.                         DoEvents
  92.                         <... тут код по обработке компьютера Srv ...>
  93.                     End If
  94.                 Next Ind
  95.             End If
  96.         Loop While lRet = ERROR_MORE_DATA
  97.     End If
  98.    
  99.     If hEnum Then WNetCloseEnum hEnum
  100. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.917 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы