От выбора ветви реестра (HKEY_LOCAL_MACHINE ИЛИ HKEY_CURRENT_USER) зависит, в сеансе всех ли пользователей будет запускаться приложение.
Рассмотрим создание простейшей программы, способной определить, запускается ли она автоматически, а если запускается, то каким образом. Программа также будет уметь создавать и удалять параметры в нужных разделах реестра для задания нужного режима запуска.
Пусть на форме приложения расположены три переключателя (рис. 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).
...
Листинг 7.17. Применение режима запуска
procedure TForm1.cmbApplyClick(Sender: TObject);
var
reg: TRegistry;
begin
reg := TRegistry.Create();
reg.RootKey := HKEY_LOCAL_MACHINE;
//Отмена прошлого режима
//..удаление параметра из раздела Run
if not optAutoRun.Checked then
if reg.OpenKey(\'Software\Microsoft\Windows\CurrentVersion\
Run\', False)
then
begin
reg.DeleteValue( Application.Title );
reg.CloseKey();
end;
//..удаление параметра из раздела RunOnce
if not optRunOnce.Checked then
if reg.OpenKey(\'Software\Microsoft\Windows\CurrentVersion\
RunOnce\',False)
then
begin
reg.DeleteValue( Application.Title );
reg.CloseKey();
end;
//Установка нового режима (создание параметра в соотвествующем
//разделе)
if optAutoRun.Checked then
//..добавление параметра в раздел Run
if reg.OpenKey(\'Software\Microsoft\Windows\CurrentVersion\
Run\', True)
then
begin
reg.WriteString( Application.Title, Application.ExeName);
reg.CloseKey();
end;
if optRunOnce.Checked then
//..добавление параметра в раздел RunOnce
if reg.OpenKey(\'Software\Microsoft\Windows\CurrentVersion\
RunOnce\',True)
then
begin
reg.WriteString( Application.Title, Application.ExeName);
reg.CloseKey();
end;
//Для верности обновим показания на форме по данным из реестра
GetRunMode();
reg.Free();
end;
При желании вы можете изменить ветвь реестра на HKEY_CURRENT_USER, если приложение (которое вы будете делать) запускалось только для определенных пользователей.
Запуск приложения из командной строки
Сразу оговоримся, что из командной стр оки (например, из окна Запуск программы,открываемого командой Пуск→ Выполнить)можно запустить любое приложение: достаточно только ввести его полный или относительный (относительно рабочей папки) путь. Однако, возможно, вы замечали, что некоторые приложения можно запускать, просто вводя в командной строке имя приложения, например msaccess или winword. Займемся обеспечением возможности запуска приложения таким ускоренным способом.
Чтобы зарегистрировать приложение для быстрого запуска, можно поместить его путь в ветвь реестра SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths корневого раздела HKEY_CURRENT_USER ИЛИ HKEY_LOCAL_MACHINE. Путь ЕХЕ-файла приложения должен быть записан в параметр (По умолчанию) подраздела, имеющего такое же имя, как и ЕХЕ-файл приложения (включая расширение).
Пример процедуры, регистрирующей приложение для быстрого запуска, приведен в листинге 7.18.
...
Читать дальше
Конец ознакомительного отрывка
Купить книгу