Пишем программу мониторинга за памятью

Материал из 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