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
// Загруженность памяти
Label1.Caption:= IntToStr(dwMemoryLoad) + ' %';
Label2.Caption:= IntToStr((dwTotalPhys) div 1024) + 'Кбайт'; // Всего физической
Label3.Caption:= IntToStr((dwAvailPhys) div 1024) + 'Кбайт'; // Свободно физической
Label4.Caption:= IntToStr((dwTotalPageFile) div 1024) + 'Кбайт'; // Всего страничной
Label5.Caption:= IntToStr((dwAvailPageFile) div 1024) + 'Кбайт';// Свободно страничной
Label6.Caption:= IntToStr((dwTotalVirtual) div 1024) + 'Кбайт'; // Всего swap
Label7.Caption:= IntToStr((dwAvailVirtual) div 1024) + ' Кбайт'; // Свободно swap
Gauge1.MaxValue:= dwTotalPhys;//определяем максимум
//отображаем процент загруженности памяти
Gauge1.Progress:= dwTotalPhys-dwAvailPhys;
Читать дальше