Как
отомстить врагу. Добавляем приложение в
Автозагрузку
В статье "Как
отомстить "врагу" средствами Windows.pas"
я обещал рассказать, как добавить приложение
в StartUp. Так что читайте и впитывайте.
Сейчас мы разберем несколько вариантов алгоритма.
Можно просто скопировать
исполняемый файл в папку "Автозагрузка",
узнав ее местонахождение с помощью функций
модуля ShlObj.pas.
program StartUp;
{$APPTYPE CONSOLE} uses ShlObj,
//!! SysUtils, Windows;
var
Folder: Pchar; //путь
к StartUp List: PitemidList; //список
"специальных" папок begin
//ищем папку SHGetSpecialFolderLocation(0,CSIDL_STARTUP,List); new(folder); SHGetPathFromIDList(List,folder); //Нашли?
Переходим в директорию StartUp ChDir(folder); //копируем
файл CopyFile(PChar(ExtractFilePath(paramStr(0))
+ 'StartUp.exe'), 'StartUp.exe', true);
//укажите имя своего
EXE файла end.
Теперь загляните
в папку "Автозагрузка". Если вы
указали в функции имя СВОЕГО файла, он должен
быть уже там :).
Обратите внимание
на три выделенных строки. С их помощью можно
найти путь к любой системной папке, указав
в функции SHGetSpecialFolderLocation соответствующую
константу: CSIDL_DESKTOP для рабочего стола,
CSIDL_FONTS для шрифтов и т.д.
А теперь более
простой способ - запись ключа в секцию Run
реестра. Ниже в одной процедуре совмещено
и его создание, и удаление.
Uses Registry; //............ procedure
ChangeReg(StrName: ShortString; delete:
boolean); var reg: TRegistry; begin Reg
:= nil; try reg := TRegistry.Create; reg.RootKey
:= HKEY_LOCAL_MACHINE; reg.LazyWrite
:= false; reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',false); if
not delete then reg.WriteString(StrName,
Application.ExeName) else reg.DeleteValue(StrName); reg.CloseKey; reg.free; except if
Assigned(Reg) then Reg.Free; end; end; procedure
TForm1.AddBtnClick(Sender: TObject); begin ChangeReg('My
App',false); //добавляем
в Автозагрузку end;
procedure
TForm1.RemoveBtnClick(Sender: TObject); begin ChangeReg('My
App',true); //удаляем
из Автозагрузки end;
Вот и всё.
Если что не удалось - пишите, мы вам поможем.
|