Недавно в статье, посвящённой недокументированным возможностям Windows, я обнаружил интересный способ измерения степени использования процессора. Дело в том, что в Windows 9x существуют счётчики Performance Counters, которые можно включить из реестра, и в реестр же они будут посылать результаты замеров. Например загруженности процессора. Есть они и в NT, но доступ к ним сложнее.
К моему собственному удивлению результат перевода С на человеческий VB отлично заработал! По-сему, если Вашей программе нужно знать загруженность проца, или если Вы заинтересуетесь доступом в реестр из WinApi32, то Вы можете познакомиться с простеньким примером. Разумеется в полном варианте нужно было бы вставить проверку типа Windows (например через GetWindowsVersion), сворачивание в SysTray и т.п., но в "укороченном" виде Вам будет проще приспособить данную фичу Windows к своим потребностям.
Итак. Если у Вас не NT. Расположите на форме кнопочку. Назовём её cmdStart. Как водится, в раздел General Declarations вставляем:
Открыть нужный ключ:
Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" ( _
ByVal hkey As Long, _
ByVal pSubKey As String, _
ByVal ulOptions As Long, _
ByVal samDesired As Long, _
phkResult As Long) As Long
hkey, lpSubKey - пути к ключу,
ulOptions - зарезервировано: должно быть ноль,
samDesired - тип доступа: комбинация предопределённых констант,
phkResult - переменная, получающая хэндл нужного ключа. Не забудьте потом закрыть.
Получить тип и значение параметра из ранее открытого ключа:
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" ( _
ByVal hkey As Long, _
ByVal lpValueName As String, _
ByVal lpReserved As Long, _
lpType As Long, _
lpData As Any, _
lpcbData As Long) As Long
hkey - хэндл открытого ранее ключа,
lpValueName - имя параметра, который нужно прочитать,
lpReserved - зарезервировано: должно быть ноль,
lpType - переменная, в которую будет возвращаться тип параметра
можно передать ноль, если тип не требуется (нам, кстати, передаст 3 - REG_BINARY),
lpData - то, что нас интересует,
lpcbData - переменная, которая содержит длину буфера под lpData,
после выполнения будет содержать кол-во в действительности переданных байт
у нас - длина слова: 4. Если переменную заменить просто на 4 - тоже работает
Закрытие ранее открытого ключа:
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hkey As Long) As Long
Некоторые константы из API Viewer:
Private Const HKEY_DYN_DATA = &H80000006
Private Const STANDARD_RIGHTS_ALL = &H1F0000
Private Const READ_CONTROL = &H20000
Private Const STANDARD_RIGHTS_READ = (READ_CONTROL)
Private Const KEY_QUERY_VALUE = &H1
Private Const KEY_SET_VALUE = &H2
Private Const KEY_CREATE_SUB_KEY = &H4
Private Const KEY_ENUMERATE_SUB_KEYS = &H8
Private Const KEY_NOTIFY = &H10
Private Const KEY_CREATE_LINK = &H20
Private Const SYNCHRONIZE = &H100000
Private Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL OR _
KEY_QUERY_VALUE OR KEY_SET_VALUE OR _
KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or _
KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))
Private Const KEY_READ = ((STANDARD_RIGHTS_READ Or _
KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or _
KEY_NOTIFY) And (Not SYNCHRONIZE))
Для служебных нужд:
Самый ресурсощедящий способ выждать паузу (в миллисекундах):
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Всегда пригодится:
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, _
ByVal hWndInsertAfter As Long, _
ByVal x As Long, _
ByVal y As Long, _
ByVal cx As Long, _
ByVal cy As Long, _
ByVal WFlags As Long) As Long
А это наше:
Dim hkey As Long
Dim dwCPUUsage As Long
DimlpcbDataAsLongпо-моему действительно лучше выкинуть,
подставив в нужных местах 4. Ау, теоретики!
Dim bStart As Boolean
Private Sub Form_Load()
SetWindowPos Me.hwnd, -1, 0, 0, 0, 0, 3
видим всегда
End Sub
Private Sub cmdStart_Click()
bStart = Not bStart
bStart - это Вкл-Выкл. См. далее
If bStart Then
если - True - начинаем
cmdStart.Caption = "&Stop"
меняем название кнопочки
Включаем счётчик, считывая значение соответствующего ключа:
If RegOpenKeyEx(HKEY_DYN_DATA, "PerfStatsStartStat", 0, KEY_ALL_ACCESS, _
hkey) <> 0 Then Exit Sub
lpcbData = 4
RegQueryValueEx hkey, "KERNELCPUUsage", 0, 0, dwCPUUsage, lpcbData
RegCloseKey hkey
закрыть ключ
Считываем значение прямо из реестра:
If RegOpenKeyEx(HKEY_DYN_DATA, "PerfStatsStatData", 0, KEY_READ, _
hkey) <> 0 Then Exit Sub
Do While bStart
пока ещё раз не нажмём на кнопочку <
RegQueryValueEx hkey, "KERNELCPUUsage", 0, 0, dwCPUUsage, lpcbData
Sleep 500
интервал опроса - полсекунды
Caption = Str$(dwCPUUsage) & "%"
Любуемся!!!
DoEvents
даём жить
Loop
RegCloseKey hkey
закрыть ключ
останавливаем счётчик. Если Вы прервали выполнение программы
до этого момента, остановить счётчик можно только перезагрузившись!!!
Проверено:((
If RegOpenKeyEx(HKEY_DYN_DATA, "PerfStatsStopStat", 0, KEY_ALL_ACCESS, _
hkey) <> 0 Then Exit Sub
lpcbData = 4
RegQueryValueEx hkey, "KERNELCPUUsage", 0, 0, dwCPUUsage, lpcbData
RegCloseKey hkey
помним всегда!
Else
cmdStart.Caption = "&Start"
меняем название кнопочки и...
Caption = "Stoped..."
не даем себе впасть в уныние глядя на зависшие 100%
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
If bStart Then
cmdStart_Click
End If
ленивые меня поймут;-)
End Sub
Другие работы по теме:
1. Введение в предмет
Целью курса является изучение принципов и освоение практических навыков параллельного программирования с использование технологии mpi
Микропроцессор SA-1100
Микропроцессор SA-1100, с максимальной тактовой частотой 220 МГц - первый встраиваемый процессор, приближающийся к соотношению 1000 MIPS/Вт.
Маркетинговая политика фирмы Intel
Министерство общего и профессионального образования Российской Федерации Санкт-Петербургская инженерно-экономическая Академия Институт экономики и менеджмента в промышленности
Смысл немой сцены в комедии Н. В. Гоголя Ревизор
Немой сцене в комедии Н. В. Гоголя «Ревизор» предшествует развязка сюжета, читается письмо Хлестакова, и становится ясным самообман чиновников. В этот момент уходит то, что связывало героев на протяжении всего сценического действия ? страх, и единство людей распадается на наших глазах. Страшное потрясение, которое произвело на всех известие о прибытии настоящего ревизора, вновь объединяет людей ужасом, но это уже не единство живых людей, а единство бездыханных окаменелостей.
Душевная простота
Автор: Зощенко М.М. Может, помните--негры к нам приезжали. В прошлом году. Негритянская негрооперетта. Так эти негры очень даже довольны остались нашим гостеприимством. Очень хвалили нашу культуру и вообще все начинания.
ОДИНОЧНЫЙ ЗАМЕР
Автор: Шаламов В.Т. ОДИНОЧНЫЙ ЗАМЕР Вечером, сматывая рулетку, смотритель сказал, что Дугаев получит на следующий день одиночный замер. Бригадир, стоявший рядом и просивший смотрителя дать в долг "десяток кубиков до послезавтра", внезапно замолчал и стал глядеть на замерцавшую за гребнем сопки вечернюю звезду.
Степь 2
Степь Автор: Вяземский П.А. Бесконечная Россия Словно вечность на земле! Едешь, едешь, едешь, едешь, Дни и версты нипочем! Тонут время и пространство
Вересковий мед
Автор: Роберт Льюіс Стівенсон. Из вереска напиток Забыт давным-давно, А был он слаще меда, Пьянее, чем вино. В котлах его варили И пили всей семьей Малютки-медовары
Pentium II
Наиболее высокопроизводительный процессор, сочетающий мощность процессора PentiumR Pro с возможностями технологии MMXT Процессор Pentium II с тактовой частотой 266 МГц, согласно стандартным эталонным тестам(1), обеспечивает повышение производительности от 1.6x до 2x по сравнению с процессором Pentium-200 МГц, и более, чем в 2 раза при оценке с помощью мультимедийных тестов (2)
Современные процессоры
Современные модели ЦП значительно превосходят по быстродействию своих предшественников. Этим они обязаны нескольким значительным усовершенствованиям.
Мощнейший мультимедийный нотбук Acer Aspire 4553
14-дюймовая матрица оптимальна для удобной работы с разрешением 1366?768. Даже ежели юзер не отличается зоркостью, в основной массе случаев не появится надобности усиливать размер системных шрифтов, чему содействует и достойная контрастность.
Назначение процессора
Изучение сущности, функций и основных задач центрального процессора - микросхемы, исполнителя машинных инструкций (кода программ), главной части аппаратного обеспечения компьютера или программируемого логического контроллера. Основные характеристики.
Изучение принципов микропрограммного управления
Цель работы: Изучение принципов построения микропрограммного устройства управления. Теория: Развитие микроэлектронной базы запоминающих устройств позволило создать память, параметры которой существенно снизили влияние микропрограммирования на производительность процессора и ЭВМ в целом.
Если разобрать компьютер (Доклад)
3 Сентября 1996 г. Доклад по информатике ученика 10 класса школы “Планета” Жураковского Вадима по теме: “ Если разобрать компьютер…”
Архитектура компьютера
Компьютер – Универс. многфункц. электр. программно-упр. устр-во для хранения, обр. и передачи инф-ии. Под архитект. компьютера понимаестся совокупность его харак-к. Это общ. опис. структ. и функций ЭВМ, принципа работы и системы и сист. команд процессора.
NGIO (система ввода-вывода нового поколения)
NGIO – новое поколение систем ввода-вывода. Новое поколение процессоров для PC. Рылов В.Ю. Система ввода-вывода NGIO. NGIO (The Next Generation Input) – Output это принципиально новый подход в организации периферии персональных компьютеров предложенный и анонсированный фирмой Intel.
Разъемы материнской платы Intel D815EEA
Анализ материнской платы Intel D815EEA, установка процессора. Хаб Графики и Памяти 82815E – GMCH, Южный мост. Описание программного Хаба 82802AB, слотов PCI и CNR, слотов памяти. Опциональные звуковые чипы. Цифровой видеовыход Digital Video Out.
Разработка структуры процессора на основе МПА с жесткой логикой
Разработка модели процессора, выполняющего набор машинных команд. Структурная схема процессора (операционного и управляющего автоматов), анализ принципа работы. Содержательный алгоритм микропрограммы, синтез управляющего автомата на основе жесткой логики.
Шины
Виды системных шин. Пропускная способность шины.
Устройства ЭВМ: КЭШ-память
Кэш-память – это высокоскоростная память произвольного доступа, используемая процессором компьютера для временного хранения информации.
Архитектура процессоров
ФГОУ СПО «Ярославский промышленно-экономический техникум» Архитектура процессоров реферат по учебной дисциплине «Технические средства информатизации»
Микропроцессор КР580ИК
КР580ИК80 представляет собой 8-разрядный процессор, в котором совмещены операционное и управляющее устройства. Опишем кратко узлы этого процессора.
Что такое интерфейс
Для наиболее простого соединения периферийного устройства с шиной компьютера следует использовать порты ввода-вывода. Порт ввода представляет собой ряд тристабильных вентилей, а порт вывода является регистром.
Робертс (Roberts) Эдвард
Робертс (Roberts) Эдвард, американский инженер-электронщик, создатель первого коммерческого персонального компьютера Altair.
Нойс Роберт (Noyce Robert Norton)
Нойс Роберт (Noyce Robert Norton - американский инженер, изобретатель (1959) интегральной схемы, системы взаимосвязанных транзисторов на единой кремниевой пластинке, основатель (1968, совместно с Г. Муром) корпорации Intel.