Ветеран
Сообщения: 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
|