Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Поиск компьютеров в локальной сети и отображение их в виде дерева.

Ответить
Настройки темы
[решено] Поиск компьютеров в локальной сети и отображение их в виде дерева.

Аватара для Pavluha

Старожил


Сообщения: 165
Благодарности: 7


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: Pavluha
Дата: 29-01-2013
Описание: дополнил
Здравствуйте. Допустим, у меня в локальной сети около 50 компьютеров и в один момент нужно узнать, какие из них онлайн и, если онлайн, скачать с одного из них (какой мне будет нужен) файл "D:\pic.png".

Список компьютеров нужно отобразить в виде дерева, который бы показывал не только имена компьютеров онлайн, а также группу (и подгруппу, если есть) к которой он относится.

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

Как это сделать?

Отправлено: 19:53, 29-01-2013

 

Аватара для Pavluha

Старожил


Сообщения: 165
Благодарности: 7

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
#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

Последний раз редактировалось Pavluha, 30-01-2013 в 11:55. Причина: доделал код, разукрасил и дал ссылку


Отправлено: 11:06, 30-01-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Поиск компьютеров в локальной сети и отображение их в виде дерева.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Прочее - Видимость компьютеров в локальной сети Steam_89 Сетевые технологии 13 11-12-2012 22:04
Разное - Отображение имен компьютеров в локальной сети dimon91 Microsoft Windows 7 1 02-06-2012 17:50
Прочее - Пропала часть компьютеров локальной сети! andrystepa Сетевые технологии 3 22-12-2011 09:58
Разное - Как ускорить поиск и отображение сети? nunahren Microsoft Windows 7 5 08-11-2010 21:46
Отображение компьютеров в сети ZSM Сетевые технологии 4 07-10-2004 17:26




 
Переход