Но метод ExecQuery работает медленно и если его
часто вызывать, то остальные процессы в программе тормозятся.
Пишу так:
- Код: Выделить всё
Sub MonitorTerm()
Set objWMIService = GetObject("winmgmts:\\.\root\WMI")
Set colItems = objWMIService.ExecQuery("SELECT * FROM MSAcpi_ThermalZoneTemperature", , 48)
For Each objItem In colItems
MaxTerm = Int(objItem.CriticalTripPoint / 10 - 273)
CurTerm = Int(objItem.CurrentTemperature / 10 - 273)
Exit For
Next
Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")
End Sub
Sub MonitorMemory()
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem", , 48)
For Each objItem In colItems
CurMem = MaxMem - objItem.FreePhysicalMemory / 1024
Next
CurM = CurMem & " MB"
End Sub
Sub MonitorCPU()
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_PerfFormattedData_PerfOS_Processor", , 48)
For Each objItem In colItems
CPU = objItem.PercentProcessorTime
Next
End Sub
Но, возможно, есть способ единожды вызвать метод, чтобы каким-то образом связать переменную с нужным значением?
Ведь события WMI не нужно каждый раз опрашивать, достаточно подписаться на счётчик. Да и мануалы в сети говорят, что нечто вроде счётчика было на 9x/Me для загрузки процессора через реестр.
Значит что-то подобное должно быть и в WMI.
Вот только что?