Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


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

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


Serg2010, это крайне неудобное решение:
читать дальше »
связь может прерваться в любой момент, машина может выключаться некорректно и т.п. Наконец, подобная система давно существует: Vadims Podans' blog - Сетевое окружение (и особливо по ссылкам на KB внутри статьи). Именно из-за её ограничений и возникает потребность иметь точную картину, которую может дать только сиюминутный опрос машин.


Держите (я упростил приведённый пример для конкретного случая):
читать дальше »
Код: Выделить весь код
AutoItSetOption("MustDeclareVars", 1)

Local $aComputers = StringSplit("google.com,www.ya.ru,localhost,test", ",", 2)

Local $oSWbemServicesEx = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\Root\CIMV2")
Local $oSWbemSink       = ObjCreate("WbemScripting.SWbemSink")
Local $oSinkObject      = ObjEvent($oSWbemSink, "Sink_")

Local $lCount = UBound($aComputers)

For $sComputer In $aComputers
    $oSWbemServicesEx.ExecQueryAsync($oSWbemSink, "SELECT * FROM Win32_PingStatus WHERE ADDRESS = '" & $sComputer & "'")
Next

Do
    Sleep(100)
Until $lCount = 0

$oSWbemSink.Cancel

$oSinkObject      = 0
$oSWbemSink       = 0
$oSWbemServicesEx = 0

Exit(0)
;=============================================================================

;=============================================================================
Func Sink_OnObjectReady($oWbemObject, $oWbemAsyncContext)
    If IsNumber($oWbemObject.StatusCode) Then
        If $oWbemObject.StatusCode = 0 Then
            ConsoleWrite($oWbemObject.Address & @Tab & "On" & @Tab & "Response time: " & $oWbemObject.ResponseTime & " ms" & @CRLF)
        Else
            ConsoleWrite($oWbemObject.Address & @Tab & "Off" & @Tab & "Status code: " & $oWbemObject.StatusCode & @CRLF)
        EndIf
    Else
        ConsoleWrite($oWbemObject.Address & @Tab & "Not found" & @CRLF)
    EndIf
EndFunc
;=============================================================================

;=============================================================================
Func Sink_OnCompleted($iHResult, $oWbemErrorObject, $oWbemAsyncContext)
    $lCount = $lCount - 1
EndFunc
;=============================================================================

Возможный результат:
читать дальше »
Код: Выделить весь код
>Running:(3.3.6.1):C:\Program Files\AutoIt3\autoit3.exe "E:\Песочница\0119\0002.au3"    
localhost	On	Response time: 0 ms
www.ya.ru	On	Response time: 573 ms
google.com	On	Response time: 528 ms
test	Not found
+>23:15:36 AutoIT3.exe ended.rc:0
>Exit code: 0    Time: 13.066

Теперь прикручивайте:
Цитата Serg2010:
Будет механизм проверки активности компа к списку на форме и выделению строчки в нём сам прикручу ... »

Отправлено: 23:18, 21-04-2013 | #6