|
本帖最后由 9zhmke 于 2019-9-29 17:55 编辑
我以前也是这么做,后来发现总是不准确。推荐个改进方法,把暂停的时间改为检测CPU占有率和硬盘使用率,如果这两个都低就可以直接点击了,如果这有一个高就多等一会儿。
这几个有些是网上抄改有些是自己写的,典型使用方法:
while CPU_busy >5 or Hard_busy >10240: wscript.sleep 200:Wend '如果CPU忙或者硬盘忙则等待
- Function Ping(url) '检查网络Ping值,单位毫秒
- Set objWMI = GetObject("winmgmts:\\.")
- Set colPings = objWMI.ExecQuery ("Select * From Win32_PingStatus where Address = '" & url & "'")
- Ping=9999
- On error resume next
- For Each objPing in colPings
- Ping=objPing.ResponseTime+0
- Next
- On error goto 0
- End Function
复制代码
- Function Wait(proc) '等待程序完成,十秒还没完成则退出
- dim mark,obj,proce,data,x
- do
- mark=0
- Set obj = getobject("winmgmts:\\.\root\cimv2")
- Set proce = obj.execquery("select * from win32_process")
- For each x in proce
- if lcase(x.name)=proc then mark=1
- data=data+1
- next
- if mark=0 or data>100 then exit do
- wscript.sleep 100
- Set obj = nothing
- Set proce = nothing
- loop
- End Function
复制代码
- Function Hard_busy() '硬盘忙闲
- Dim vName,IDE,cPPP,sNow,A,B,R1,W1,R2,W2,read,write
- Set objWMIService=GetObject("winmgmts:\\.\root\cimv2")
- Set IDE = objWMIService.ExecQuery("Select * from Win32_DiskDrive WHERE InterfaceType='IDE'")
- Set cPPP = objWMIService.ExecQuery("SELECT * FROM Win32_PerfRawData_PerfDisk_PhysicalDisk WHERE Name<>'_Total'")
- DskPs=WshShell.ExpandEnvironmentStrings("%SystemDrive%") '取系统驱动器
- Set A = objWMIService.ExecQuery("Select * from Win32_PerfRawData_PerfDisk_LogicalDisk Where Name = '"& DskPs &"'")
- For Each B In A
- R1 = B.DiskReadBytesPersec: W1 = B.DiskWriteBytesPersec
- If RA0 = "" Then RA0 = B.DiskReadBytesPersec Else RA1 = R1 End If
- If WA0 = "" Then WA0 = B.DiskWriteBytesPersec Else WA1 = W1 End If
- Next
- Set A = Nothing
- WScript.Sleep(500)
- Set A = objWMIService.ExecQuery("Select * from Win32_PerfRawData_PerfDisk_LogicalDisk Where Name = '"& DskPs &"'")
- For Each B In A
- R2 = B.DiskReadBytesPersec
- W2 = B.DiskWriteBytesPersec
- Next
- Set A = Nothing
- read=R2-R1:write=W2-W1 'msgbox "半秒实时读取:" & read & "/s 实时写人:" & write
- Hard_busy = read + write
- Set IDE=nothing
- Set cPPP=nothing
- End Function
复制代码
- Function CPU_busy() 'CPU使用率
- dim objProc
- Set objProc = GetObject("winmgmts:\\.\root\cimv2:win32_processor='cpu0'")
- CPU_busy=objProc.LoadPercentage 'CPU使用率
- Set objProc = nothing
- End Function
复制代码 |
|