Показывает загруженость процессораDelphi , ОС и Железо , ПроцессорПоказывает загруженость процессора
Автор: DDA { **** 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 и обновляет индикатор каждую секунду. Вот разбивка кода: Декларация модуля
Модуль декларирует одиночный форм Инициализация
Программа инициализирует регистр Событие клика кнопки
Когда кнопка нажата, программа читает данные о использовании CPU из регистра Событие таймера
Процедура события таймера читает данные о использовании CPU из регистра Предложения по улучшению кода
Вот несколько предложений для улучшения кода:
1. Обработка ошибок: программа не обрабатывает ошибки, которые могут возникнуть при чтении из или записи в регистр. Хорошей идеей будет добавить обработку ошибок для потенциальных проблем.
2. Организация кода: логика программы смешана с кодом, связанным с пользовательским интерфейсом. Рекомендуется разделить два типа кода на отдельные модули или классы для лучшей организации и поддержки.
3. Конвенции именования: некоторые имена переменных, такие как Альтернативное решение Если вы хотите улучшить производительность и надежность программы, рассмотрите использование более современной 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 |