-
AutoIt
(
http://forum.oszone.net/forumdisplay.php?f=103)
Поиск компьютеров в локальной сети и отображение их в виде дерева.
Здравствуйте. Допустим, у меня в локальной сети около 50 компьютеров и в один момент нужно узнать, какие из них онлайн и, если онлайн, скачать с одного из них (какой мне будет нужен) файл "D:\pic.png".
Список компьютеров нужно отобразить в виде дерева, который бы показывал не только имена компьютеров онлайн, а также группу (и подгруппу, если есть) к которой он относится.
Проблема в том, что не все компьютеры могут быть онлайн и кто-то может сменить имя компьютера, а также его ип адрес в локальной сети.
Как это сделать?
|
Код:
#include <GuiTreeView.au3>
AutoItSetOption("MustDeclareVars", 1)
Global $hMainWnd, $hTreeView,$hTreeViewComp[256][2],$i,$j
$hMainWnd = GUICreate("Локальная сеть",500,300)
$hTreeView = GUICtrlCreateTreeView(10,10,480,280)
$i = 3 ;кол-во хандлов до функции
GUISetState ()
_Start()
_GUICtrlTreeView_Expand ($hTreeView)
While 1
Switch GUIGetMsg($hMainWnd)
Case 0
ContinueLoop
Case -3
ExitLoop
Case GUICtrlRead($hTreeView)
If MsgBox(4,'Вопрос:','Вы действительно хотите скачать файл D:\pic.png с компьютера ' & $hTreeViewComp[GuiCtrlRead($hTreeView)][1])=6 Then
FileCopy($hTreeViewComp[GuiCtrlRead($hTreeView)][1] & "\d\pic.png",@ScriptDir & '\pic.png')
EndIf
EndSwitch
WEnd
Func _Start ()
Local $oShell = ObjCreate("Shell.Application")
Local $oFolder_Network
Local $oFolder_EntireNetwork
Local $objFolder_MSNetwork
Local $oFolder_Domain
Local $oFolder_MachineName
Local $oFolderItem
Local $oFolderItem_Domain
Local $oFolderItem_MachineName
; Получение папки "Сетевое окружение"
$oFolder_Network = $oShell.NameSpace("::{208D2C60-3AEA-1069-A2D7-08002B30309D}")
; Получение папки "Вся сеть"
$oFolder_EntireNetwork = $oFolder_Network.Items().Item("EntireNetwork").GetFolder
; Получение папки "Microsoft Windows Network"
For $oFolderItem In $oFolder_EntireNetwork.Items()
If $oFolderItem.Name = "Microsoft Windows Network" Then
$objFolder_MSNetwork = $oFolderItem.GetFolder
If IsObj($objFolder_MSNetwork) Then
; Перебор доменов и рабочих групп
For $oFolderItem_Domain In $objFolder_MSNetwork.Items()
If $oFolderItem_Domain.IsFolder Then
$i+=1
$j=$i
$hTreeViewComp[$i][0] = GUICtrlCreateTreeViewItem($oFolderItem_Domain.Path & " [" & $oFolderItem_Domain.Name & "]",$hTreeView)
$hTreeViewComp[$i][1] = $oFolderItem_Domain.Path
$oFolder_Domain = $oFolderItem_Domain.GetFolder
If IsObj($oFolder_Domain) Then
; Перебор компьютеров
For $oFolderItem_MachineName In $oFolder_Domain.Items()
$i+=1
$hTreeViewComp[$i][0] = GUICtrlCreateTreeViewItem($oFolderItem_MachineName.Path & " [" & $oFolderItem_MachineName.Name & "]",$hTreeViewComp[$j][0])
$hTreeViewComp[$i][1] = $oFolderItem_MachineName.Path
Next
Else
ConsoleWriteError(@TAB & "Can't connect to [" & $oFolderItem_Domain.Name & "]" & @CRLF)
EndIf
EndIf
Next
Else
ConsoleWriteError(@TAB & "Can't find [Microsoft Windows Network]" & @CRLF)
EndIf
ExitLoop
EndIf
Next
EndFunc
Сам начал тему, сам и закончил) Основу взял отсюда: http://forum.oszone.net/post-1509068-9.html
|
Время: 17:57.
© OSzone.net 2001-