Форум программистов, компьютерный форум, киберфорум
VBScript/JScript/WSH/WMI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/54: Рейтинг темы: голосов - 54, средняя оценка - 4.63
0 / 0 / 1
Регистрация: 22.08.2013
Сообщений: 70
VBS

Получить текущую температуру процессора

07.10.2013, 10:04. Показов 10718. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, пытаюсь написать скрипт который выдает текущую температуру процессора, но он выдает ошибку подскажите, пожалуйста, что я делаю не так. Вот код:
Visual Basic
1
2
3
4
5
6
7
8
9
strComputer = "."
 
set wbemServices = GetObject("winmgmts:\\" & strComputer & "\root\wmi")
set wbemObjectSet = wbemServices.InstancesOf("MSAcpi_ThermalZoneTemperature")
 
For Each wbemObject In wbemObjectSet
          WScript.Echo "InstanceName : " & wbemObject.InstanceName 
        WScript.Echo "CurrentTemperature : " & wbemObject.CurrentTemperature
Next
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.10.2013, 10:04
Ответы с готовыми решениями:

Как получить текущую дату и время формата 12.12.2004_15:46?
как получить текущую дату и время формата 12.12.2004_15:46

Получить температуру процессора
Как получить температуру процессора, при этом не большим количеством кода?

Получить температуру процессора
Кто-нибудь занимался вопросом по получению данных из HW монитора BIOS из-под Окошек? WMI и CIM(хотя по большому счету это одно и то же)...

10
zlatin
08.10.2013, 23:01
Говорят, не все компьютеры поддерживают эту функцию.
З.Ы. У меня заработало.
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
09.10.2013, 01:52
Лучший ответ Сообщение было отмечено ComSpec как решение

Решение

Snak2013, потому что нужно запускать в режиме повышенных привилегий.
А для этого соответственно еще и проверять версию операционной системы.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Const DQ = """", SP = " ", BS = "\", HKCU = &H80000001, HKLM = &H80000002, KQV = &H1, KSV = &H2
Const wbemFlagReturnImmediately = &h10, wbemFlagForwardOnly = &h20
 
Set colOS = GetObject("winmgmts:\root\cimv2").ExecQuery("Select * from Win32_OperatingSystem")
 
For Each oOS In colOS
    strOSLong = oOS.Version
Next
 
If Left(strOSLong, 1) = "6" Then
    If Not isAdminRights Then
        Set oShellApp = CreateObject("Shell.Application")
        oShellApp.ShellExecute WScript.FullName, DQ & WScript.ScriptFullName & DQ, "", "runas", 1
    End If
End If
 
Set objWMIService = GetObject("winmgmts:\\.\root\WMI")
Set colItems = objWMIService.ExecQuery("SELECT * FROM MSAcpi_ThermalZoneTemperature", "WQL", _
                                          wbemFlagReturnImmediately + wbemFlagForwardOnly)
on error resume next
for each objItem in colItems
    WScript.Echo "Температура процессора (в цельсиях): " & (objItem.CurrentTemperature - 2732) / 10
next
WScript.Quit
 
Function isAdminRights()
    Set oReg = GetObject("winmgmts:root\default:StdRegProv")
    strKey = "System\CurrentControlSet\Control\Session Manager"
    intErrNum = oReg.CheckAccess(HKLM, strKey, KQV + KSV, flagAccess)
    isAdminRights = flagAccess
End Function
2
0 / 0 / 1
Регистрация: 22.08.2013
Сообщений: 70
09.10.2013, 09:58  [ТС]
Dragokas, Спасибо огромное помогло.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
09.10.2013, 11:25
Цитата Сообщение от Snak2013 Посмотреть сообщение
подскажите, пожалуйста, что я делаю не так
Все не так.
Этот WMI-класс поддерживается ограниченным количеством поставщиков
BIOS и материнских плат, на многих компьютерах данный код работать не будет.
Вот объяснение одного из программистов Microsoft:
Those classes are expected to work only if your hardware exposes
the information in the SMBIOS table or via ACPI.
Это во-первых. Во-вторых, когда я занимался данным вопросом, то часто встречал
жалобы, что температура определяется неверно (сравнивали с показаниями AIDA64).
3
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
09.10.2013, 11:44
Да, у меня, к примеру, на Core i5 показывает только 2 процессора из 4.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
09.10.2013, 11:59
Лучший ответ Сообщение было отмечено как решение

Решение

Ради интереса запустил скрипт на тех компьютерах, что под рукой.

На первом (Gigabyte GA-H67MA-USB3-B3, Server 2008 R2) вообще ничего не показало.
На втором (ASUS K73S, Win7 x64) стабильно показывает 37 градусов, причем даже
под сильной нагрузкой, когда AIDA64 пишет порядка 60 градусов на всех ядрах.

У Intel-овских CPU температуру нужно читать из MSR-регистров, а они доступны
только из режима ядра. У AMD-шных процессоров немного по-другому.

В качестве образца могу сослаться на исходники Open Hardware Monitor, там
они используют драйвер WinRing как шлюз для входа в ядро:
http://code.google.com/p/open-... lDriver.cs
http://code.google.com/p/open-... ntelCPU.cs
http://code.google.com/p/open-... /AMDCPU.cs
http://code.google.com/p/open-... MD10CPU.cs
4
0 / 0 / 0
Регистрация: 06.09.2013
Сообщений: 5
31.07.2016, 23:01
А температуру видеокарты можно ?
0
0 / 0 / 0
Регистрация: 06.09.2013
Сообщений: 5
16.08.2016, 18:22
Облазил все но температуру видеокарты как посмотреть нигде нет
0
0 / 0 / 0
Регистрация: 05.06.2019
Сообщений: 1
05.06.2019, 18:34
Не работает! Подскажите решение унифицированное для разного железа
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
05.06.2019, 19:18
Выше уже давали ссылку на Open Hardware Monitor. ЕМНИП, там есть API. Да и сама утилита open-sourse-ная.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.06.2019, 19:18
Помогаю со студенческими работами здесь

Не удается получить температуру процессора
Я пытаюсь получить температуру процессора. В результате ошибка, если добавить исключение всегда вылетает это исключение. Double CPUtprt...

Как получить температуру процессора?
Как получить температуру процессора?

Получить температуру процессора средствами Java
как получить температуру процессора с помощью Java?

Получить текущую тактовую частоту процессора
В Интернете я нашёл данный код, задался целью понять, как он работает. Для этого изучил WinAPI функции, которые здесь имеются, и...

"Отказано в доступе" при попытке получить температуру процессора через WMI
Здравствуйте. Пытаюсь получить температуру процессора, а мне выбивает исключение. ManagementObjectSearcher searcher = new...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru