Пишем программу мониторинга за памятью
Материал из DRKB
пишем программу мониторинга за памятью[править | править код]
Сегодня мы попытаемся написать программу, которая будет показывать состояние памяти компа. Для начала определим что она будет делать. Ну самое главное что нам нужно, это состояние физической памяти и загруженность ее в %. А дальше, по своему вкусу, добавим еще состояние виртуальной и страничной памяти.
Начнем. Создай новый проект на Делфи (File → New → Application).
Теперь подумай, как тебе удобней отображать состояние памяти. Для меня лучше в Label, но можно и Edit. Ну это на твое усмотрение. Кидай на форму 7 компонентов Label (в них будет отображаться значение) и еще 7 (это будут пояснения: загруженность, всего физической, использовано физической, всего страничной, использовано страничной, всего виртуальной, использовано виртуальной). Какие не нужны, те отбрось ;).
Теперь кинь таймер (из вкладки System). Это будет наш главный элемент, поэтому поставь интервал по своему усмотрению (у меня он 400). Этот интервал будет отвечать за частоту обновления полей. Ну и для красоты брось ProgressBar (из вкладки Win32). У тебя должно получиться что-то типа этого:
Теперь приступим непосредственно к кодингу. Весь код мы будем писать в процедуру запуска таймера. А вот и код:
procedure TForm1.Timer1Timer(Sender: TObject);
var
m: TMemoryStatus;
temp: Integer;
begin
m.dwLength := SizeOf(m);
GlobalMemoryStatus(m);
with m do
begin
Label1.Caption := IntToStr(dwMemoryLoad) + ' %'; // Загруженность памяти
Label2.Caption := IntToStr(dwTotalPhys) + ' байт'; // Всего физической
Label3.Caption := IntToStr(dwAvailPhys) + ' байт'; // Свободно физической
Label4.Caption := IntToStr(dwTotalPageFile) + ' байт'; // Всего страничной
Label5.Caption := IntToStr(dwAvailPageFile) + ' байт'; // Свободно страничной
Label6.Caption := IntToStr(dwTotalVirtual) + ' байт'; // Всего виртуальной
Label7.Caption := IntToStr(dwAvailVirtual) + ' байт'; // Свободно виртуальной
// Загруженность на ProgressBar1
ProgressBar1.Max := dwTotalPhys;
ProgressBar1.Position := dwTotalPhys - dwAvailPhys;
end;
end;
Вот в принципе и все. Если ты используешь Edit, то вместо LabelX.Caption пиши EditX.Text, где X-номер компонента. И последнее, чтобы ProgressBar выглядела лучше, измени свойство Smooth равным True. Если у тебя возникнут какие-либо вопросы, предложения, пожелания, прошу отправлять их мне по адресу: crazy_script@mail.ru
Source: http://delphi.dax.ru
ID: 02078