VBS监控网络流量

标签: , , , ,

VBS监控网络流量,对于晚上挂迅雷等,可能有点用处。

On Error Resume Next
Dim ObjectWSH, ObjectWMI, TempFlow

Const FlowCount = 10240 '单位流量,10KB,10240字节
Const TimeCount = 30000 '单位时间,30秒,30000毫秒
'这里根据实际情况修改

TempFlow = 0

Set ObjectWSH = CreateObject("Wscript.Shell")
Set ObjectWMI = Getobject("Winmgmts:\\.\")

Set NetCards = ObjectWMI.ExecQuery("Select * from Win32_PerfRawData_Tcpip_NetworkInterface")

If NetCards.count<>0 Then
    For Each NetCard In NetCards
        If (NetCard.BytesReceivedPersec > TempFlow) Then
            TempFlow = NetCard.BytesReceivedPersec
            NetCardName = NetCard.Name
        End If
    Next
    WScript.Echo "Name: " & NetCardName
    Else
    Wscript.Echo "Not found the specified network device ..."
    WScript.Quit(0)
End If
'获取用于上网的网卡信息(最大流量的网卡)

Do
    WScript.Echo ""
    WScript.Sleep 1000
    '这个延时貌似是必须的?
    
    CurrentFlow
    BeginFlow = CurrentFlow
    Wscript.Echo Now & ", Flow: " & BeginFlow & " Bytes"
    '获取开始时接收的流量(字节)

    WScript.Sleep TimeCount
    '定义时间范围

    CurrentFlow
    EndFlow = CurrentFlow
    Wscript.Echo Now & ", Flow: " & EndFlow & " Bytes"
    '获取结束时接收的流量(字节)

    Result = EndFlow-BeginFlow
    If (Result < FlowCount) Then
        '10240即10KB,当30秒(上面的时间范围)内流量小于10KB就关闭系统
        WScript.Echo "Shutdown ..."
        ObjectWSH.Run "shutdown.exe -s -t 0", 0, TRUE
        WScript.Quit(0)
    End If
    '计算结果并比较
Loop
WScript.Quit(0)

Function CurrentFlow()
    Set ObjectFlows = ObjectWMI.InstancesOf("Win32_PerfRawData_Tcpip_NetworkInterface")
    For Each ObjectFlow In ObjectFlows
        If ObjectFlow.Name=NetCardName Then
            CurrentFlow = ObjectFlow.BytesReceivedPersec
        End If
    Next
End Function

原文链接:http://www.enun.net/?p=147

赞赏

微信赞赏支付宝赞赏

随机文章:

  1. 用VBS精确计算100的阶乘
  2. 用VBS处理二进制文件的实例
  3. VBS列出进程加载的DLL的完整路径
  4. VC编写在Windows 7下需要管理员权限的程序
  5. VBS实现UTF-8转Unicode(UTF-16)

留下回复