第一个函数:返回TRUE / FALSE
Public Function Pings(strMachines As String) As Boolean
Dim aMachines() As String
Dim machine As Variant
Dim objPing As Object
Dim objStatus As Object
aMachines = Split(strMachines, ";")
For Each machine In aMachines
Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select * from Win32_PingStatus where address = '" & machine & "'")
For Each objStatus In objPing
If IsNull(objStatus.StatusCode) or objStatus.StatusCode <> 0 Then
Debug.Print ("machine " & machine & " is not reachable")
Pings = False
Else
Pings = True
End If
Next
Next
End Function
第二个函数:返回网络通畅度
Function sPing(sHost As String) As String
Dim oPing As Object, oretStatus As Object
Set oPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery _
("select * from Win32_PingStatus where address = '" & sHost & "'")
For Each oretStatus In oPing
If IsNull(oRetStatus.StatusCode) or oretStatus.StatusCode <> 0 Then
sPing = "Status code is " & oretStatus.StatusCode
Else
sPing = "Pinging " & sHost & " with " & oretStatus.BufferSize & " bytes of data:" & Chr(10)
sPing = sPing & "Time (ms) = " & vbTab & oretStatus.ResponseTime & Chr(10)
sPing = sPing & "TTL (s) = " & vbTab & oretStatus.ResponseTimeToLive
End If
Next
End Function