Рассмотрим создание простейшей программы, способной определить, запускается ли она автоматически, а если запускается, то каким образом. Программа также будет уметь создавать и удалять параметры в нужных разделах реестра для задания нужного режима запуска.

Пусть на форме приложения расположены три переключателя (рис. 7.9). Процедура, приведенная в листинге 7.16, устанавливает состояния переключателей в зависимости от того, в каком разделе ветви HKEY_LOCAL_MACHINE расположен параметр с именем, совпадающим с именем программы (это условность, котора я нужна для работы нашего примера).

Рис. 7.9. Форма после определения варианта режима запуска приложения

...

Листинг 7.16.

Определение режима запуска приложения

procedure TForm1.GetRunMode();

var

reg: TRegistry;

begin

reg := TRegistry.Create();

reg.RootKey := HKEY_LOCAL_MACHINE;

//Определение, как запускается программа (по наличию значений

//в соответствующих разделах)

if reg.OpenKey(\'Software\Microsoft\Windows\CurrentVersion\Run\',

False)

then

begin

if reg.ValueExists(Application.Title) then

begin

//Программа есть в разделе Run —

//запускается при каждой загрузке Windows

optAutoRun.Checked := True;

reg.CloseKey();

Exit;

end;

reg.CloseKey();

end;

if reg.OpenKey(\'Software\Microsoft\Windows\CurrentVersion\

RunOnce\', False)

then

begin

if reg.ValueExists(Application.Title) then

begin

//Программа есть в разделе RunOnce —

//запускается один раз при старте Windows

optRunOnce.Checked := True;

reg.CloseKey();

Exit;

end;

reg.CloseKey();

end;

//Автозапуск программы (рассматриваемым способом) не включен

optRunNone.Checked := True;

reg.Free();

end;

Параметры запуска изменяются (в рассматриваемом приложении) при нажатии кнопки Применить (листинг 7.17).

...
Перейти на страницу:

Похожие книги