Delphi. Учимся на примерах - страница 23

стр.

>

> h1:= FindWindow(nil, 'Диспетчер задачWindows');

> {если да, то закрываем окно диспетчера задач}

> if (h1 <> 0) then PostMessage(h1, WM_QUIT, 1, 0);

>end;


>procedure TForm1.Timer1Timer(Sender: TObject);

>begin

> logon;

>end;


>procedure TForm1.Button1Click(Sender: TObject);

>begin

> check;

>end;


>procedure TForm1.passKeyPress(Sender: TObject; var Key:Char);

>begin

> if key = #13 then // если нажата клавиша

>  check; //вызываем процедуру check

>end;


>procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);

>begin

> CanClose:= False;

>end;


>procedure TForm1.FormCreate(Sender; TObject);

>var

> Reg: TRegistry;//переменная для работы с реестром

>begin

> Reg:= TRegistry.Create;

> Reg.RootKey:= HKEY_CURRENT_USER; //только для текущего пользователя

> Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', true); //открываем раздел автозагрузки в реестре

>  //и записываем название и полный путь к нашей программе

> Reg.WriteString('Logon', Application.ExeName);

> Reg.CloseKey; //закрываем реестр

> Reg.Free; //освобождаем память

>end;


>procedure TForm1.Timer2Timer(Sender: TObject);

>begin

> h1:= FindWindow('Progman', nil); //поиск Рабочего стола

> ShowWindow(h1, sw_hide); //прячем Рабочий стол

> CloseWindow(h1); //сворачиваем окно Рабочего стола

> pass.SetFocus; //переводим курсор в текстовое поле

>end;


>end.

⊚ Все файлы проекта и исполняемый файл рассмотренной программы находятся на прилагаемом к книге компакт-диске в папке Chapter 10.

Глава 11

Информация о памяти

Постановка задачи

Разработать программу, которая отображает информацию о физической, страничной и виртуальной памяти.

Разработка формы

Создайте новый проект Delphi и присвойте свойству Caption формы значение Memory Info.

Для вывода различной информации о памяти мы будем использовать компонент Label категории Standard. Разместите на форме один над другим семь таких компонентов, присвоив свойству Left каждого из них значение 230, а свойству Caption — значение 0.

Слева от этого столбца меток разместите в столбец еще семь компонентов Label, которые будут пояснять числа, отображаемые предыдущими семью метками. Присвойте их свойству Caption следующие значения (сверху вниз): Загруженность памяти:, Всего физической:, Свободно физической:, Всего страничной:. Свободно страничной:, Всего swap: И Свободно swap:.

Еще одним способом отображения загруженности физической памяти будет компонент Gauge категории Samples. Разместите этот компонент вдоль правого края формы и измените значение его свойства Kind на gkVerticalBar, чтобы изменения свойства Gauge.Progress отображались вдоль вертикальной шкалы.

Теперь обеспечим настройку автообновления данных о памяти. Для этого нам понадобится компонент Timer категории System. Пользователь будет задавать период обновления информация о памяти, с помощью компонента SpinEdit категории Samples. В его свойствах следует изменить значение MaxValue на 60, a MinValue — на 1. Это даст возможность пользователю задавать диапазон обновления от 1 до 60 секунд.

Слева от компонента SpinEdit разместите поясняющую метку с текстом Частота обновления:, а справа — метку с текстом секунд.

В правом нижнем углу формы разместите кнопку (компонент Button категории Standard) и присвойте ее свойству Caption значение Установить. По нажатию этой кнопки будет устанавливаться указанная в компоненте SpinEdit частота обновления информации.

Полученная форма должна соответствовать рис. 11.1.

Рис. 11.1. Форма для отображения информации о памяти компьютера

Разработка программного кода

В программе будет только две процедуры: первая — обработчик события Timer1.OnTimer, которая определяет и отображает информацию о памяти; вторая — обработчик события OnClick кнопки Установить для задания частоты обновления информации.

Создадим вначале главную часть программы — обработчик события Timer1.OnTimer:

>procedure TForm1.Timer1Timer(Sender: TObject);

>var

> mem: TMemoryStatus; //хранит всю информацию о памяти

>begin

> mem.dwLength:= SizeOf(mem); //размер памяти

> GlobalMemoryStatus(mem); //узнаем всю информацию о памяти

> //выводим информацию в соответствующие метки

> with mem do begin