Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Показывает загруженость процессора

Delphi , ОС и Железо , Процессор

Показывает загруженость процессора

Автор: DDA
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Показывает загруженость процессора

Показывает загруженость процессора

Зависимости: registry,Windows, SysUtils, Forms,Gauges,
             Classes, Controls, ExtCtrls, StdCtrls;
Автор:       DDA, Vologda
Copyright:   Где-то найдено
Дата:        11 февраля 2004 г.
***************************************************** }

unit Unit1;

interface

uses
  registry, Windows, SysUtils, Forms, Gauges, Classes, Controls, ExtCtrls,
    StdCtrls;

type
  TForm1 = class(TForm)
    Gauge1: TGauge;
    Timer1: TTimer;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  def: string;
  reg: TRegistry;
  Buffer: array[0..1000] of integer;
begin
  //-------------------------------
  reg := TRegistry.Create;
  reg.RootKey := HKEY_DYN_DATA;
  def := '';
  if reg.OpenKey('PerfStats\StartStat', false) = TRUE then
  begin
    reg.ReadBinaryData('KERNEL\CPUusage', buffer, 1000);
  end;
  reg.CloseKey;
  Timer1.Enabled := true;

end;
//-------------------------------

procedure TForm1.Timer1Timer(Sender: TObject);
var
  def: string;
  reg: TRegistry;
  B: array[1..4] of integer;
begin
  reg := TRegistry.Create;
  reg.RootKey := HKEY_DYN_DATA;
  def := '';
  if reg.OpenKey('PerfStats\StatData', false) = TRUE then
  begin
    reg.ReadBinaryData('KERNEL\CPUusage', b, 4);
  end;

  reg.CloseKey;
  Gauge1.Progress := b[1];
  Application.ProcessMessages;

  //-------------------------------
end;

end.

Программа на Delphi, которая отображает использование CPU системы в виде индикатора. Программа использует Windows API для счетчиков производительности для получения данных о использовании CPU и обновляет индикатор каждую секунду.

Вот разбивка кода:

Декларация модуля Модуль декларирует одиночный форм TForm1, который содержит индикатор (Gauge1), таймер (Timer1) и кнопку (Button1). Форм также имеет два приватных процедуры: Button1Click и Timer1Timer.

Инициализация Программа инициализирует регистр HKEY_DYN_DATA\PerfStats\StartStat для чтения данных о использовании CPU. Затем она включает таймер.

Событие клика кнопки Когда кнопка нажата, программа читает данные о использовании CPU из регистра HKEY_DYN_DATA\PerfStats\StartStat и сохраняет их в массив (Buffer). Таймер включается для начала обновления индикатора каждую секунду.

Событие таймера Процедура события таймера читает данные о использовании CPU из регистра HKEY_DYN_DATA\PerfStats\StatData каждую секунду. Затем она обновляет индикатор новым значением. Программа также обрабатывает любые pending сообщения в очереди сообщений приложения с помощью Application.ProcessMessages.

Предложения по улучшению кода Вот несколько предложений для улучшения кода: 1. Обработка ошибок: программа не обрабатывает ошибки, которые могут возникнуть при чтении из или записи в регистр. Хорошей идеей будет добавить обработку ошибок для потенциальных проблем. 2. Организация кода: логика программы смешана с кодом, связанным с пользовательским интерфейсом. Рекомендуется разделить два типа кода на отдельные модули или классы для лучшей организации и поддержки. 3. Конвенции именования: некоторые имена переменных, такие как def и Buffer, не описательны. Хорошей идеей будет использовать более описательные имена для кода.

Альтернативное решение Если вы хотите улучшить производительность и надежность программы, рассмотрите использование более современной API для получения данных о использовании CPU,such as Windows Performance Counter API (WMI). Это API предоставляет более точную и актуальную информацию о системной производительности. Вы также можете использовать третьестороннюю библиотеку, которая обертывает WMI API, что делает ее более простой в работе. Кроме того, вам может быть полезно рассмотреть использование более эффективного способа обновления индикатора,such as using a separate thread or an asynchronous timer event. Это позволит программе продолжать работать стабильно даже если обновление индикатора занимает много времени.

Статья описывает программу на языке Delphi, которая отображает загруженность процессора на экране в виде гистограммы.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Процессор ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:13:27/0.006026029586792/1