Автор: Трофим Роцкий для сайта Development
и Дельфи (http://delphid.dax.ru).
В статье "Как отомстить "врагу" средствами 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('SoftwareMicrosoftWindowsCurrentVersionRun',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;
Вот и всё. Если что не удалось - пишите, мы вам поможем.
Тестирование параллельного программного обеспечения представляет собой более
сложную задачу по сравнению с тестированием последовательной программы. Программист
должен знать о подводных камнях при тестировании параллельного кода, имеющихся
методологиях и инструментарии.
Аннотация. В статье кратко рассматривается архитектура AMD64 компании AMD и ее
реализация EM64T компании Intel. Описаны особенности архитектуры, ее возможности,
достоинства и недостатки.