|
И с самого начала нужно сделать небольшую оговорку. В данном примере
информация о загрузке процессора берется из реестра, из раздела
"HKEY_DYN_DATA", а такой раздел существует, скорее всего, только в
Windows 9x. Из всего сказанного выше следует, что данный пример
будет работать, скорее всего, только в Windows 9x.
А теперь вернемся к делу. Основная информация о системе хранится в
ключе "HKEY_DYN_DATA\PerfStats". О получении информации о загруженности
процессора, необходимо проделать следующие шаги:
- Для начала необходимо запустить установленный счётчик в реестре.
Это возможно путём считывания значения ключа, отвечающего за
нужный параметр системы. Например, просто считываем значение
ключа "PerfStats\StartStat\KERNEL\CPUusage" в секции
HKEY_DYN_DATA. данное действие запускает счётчик. После этого
в ключе "PerfStats\StatData\KERNEL\CPUusage" будет храниться
значение в процентах о загруженности процессора.
- Теперь, если добавить считывание загруженности процессора в
событие On timer, то мы сможем наблюдать изменение загруженности
процессора в динамике.
- По завершении, Ваша программа должна остановить счётчик в реестре.
Для этого просто считайте ключ "PerfStats\StopStat\KERNEL\CPUusage".
Это остановит счётчик. Так же в системе есть много других счётчиков.
Весь список счётчиков можно посмотреть в ключе "PerfStats\StatData",
используя редактор реестра.
Приступаем. Добавим в раздел Uses модуль Registry.
Напишем процедуру для кнопки, которая будет запускать счетчик.
// Запуск счетчика
procedure TForm1.Button1Click(Sender: TObject);
begin
Reg := TRegistry.Create;
// Указываем нужный раздел реестра
Reg.RootKey := HKEY_DYN_DATA;
// Открываем нужную ветвь
Reg.OpenKey( 'PerfStats\StartStat', false );
// Запускаем счетчик
Reg.ReadBinaryData( 'KERNEL\CPUUsage', Load, 4 );
Reg.CloseKey;
Reg.Destroy;
// Вклбчаем таймер
Timer1.Enabled := true;
end;
|
А так выглядит процедура остановки счетчика.
// Остановка счетчика
procedure TForm1.Button2Click(Sender: TObject);
begin
// Выключаем таймер
Timer1.Enabled := false;
// Сбрасываем ProgressBar
ProgressBar1.Position := 0;
Reg := TRegistry.Create;
// Указываем нужный раздел реестра
Reg.RootKey := HKEY_DYN_DATA;
// Открываем нужную ветвь
Reg.OpenKey( 'PerfStats\StopStat', false );
// Останавливаем счетчик
Reg.ReadBinaryData( 'KERNEL\CPUUsage', Load, 4 );
Reg.CloseKey;
Reg.Destroy;
end;
|
И наконец процедура для таймера, которая через установленные интервалы
времени будет получать и показывать информацию о загрузке процессора.
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Reg := TRegistry.Create;
// Указываем нужный раздел реестра
Reg.RootKey := HKEY_DYN_DATA;
// Открываем нужную ветвь
Reg.OpenKey( 'PerfStats\StatData', false );
// Узнаем процент загрузки процессора
Reg.ReadBinaryData( 'KERNEL\CPUUsage', Load, 4 );
// И показываем загрузку процессора
// Считанное из реестра знечение хранится
// в целочисленной переменной Load
ProgressBar1.Position := Load;
Reg.CloseKey;
Reg.Destroy;
end;
|
.: Пример к данной статье :.
|
При использовании материала - ссылка на сайт обязательна
|
|