Delphi World - Создать ярлык объекта в любой папке
Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Создать ярлык объекта в любой папке

- Дискеты не нужны?
- А новые?
- Еще девочки.


procedure TForm1.Button1Click(Sender: TObject);
var
  MyObject: IUnknown;
  MyIcon: IShellLink;
  MyPFile: IPersistFile;
  FileName: string;
  Directory: string;
  WFileName: WideString;
  MyReg: TRegIniFile;
begin
  MyObject := CreateComObject(CLSID_ShellLink);
  MyIcon := MyObject as IShellLink;
  MyPFile := MyObject as IPersistFile;
  //Указать что является запускающей программой
  FileName := 'C:\Project.exe';
  with MyIcon do
  begin
    // Какой файл подвергаеться воздействию запускающей программы
    SetArguments('C:\Project.exe');
    //Установить путь к запускающему файлу
    SetPath(PChar(FileName));
    // Установить рабочую директорию
    SetWorkingDirectory(PChar(ExtractFilePath(FileName)));
  end;
  MyReg :=
    TRegIniFile.Create('Software\MicroSoft\Windows\CurrentVersion\Explorer');

  {Begin_Чтобы положить ярлык на Desktop}
  Directory := MyReg.ReadString('Shell Folders', 'Desktop', '');
  {End_Чтобы положить ярлык на Desktop}

  {Begin_Чтобы положить ярлык в start menu}
  //{Directory := MyReg.ReadString('Shell Folders','Start Menu','')+
  // '\Whoa!'; //CreateDir(Directory);
  {End_Чтобы положить ярлык в start menu}

  {Begin_Чтобы положить ярлык в любую директор.}
  //Directory := 'c:\windows\desktop';
  {End_Чтобы положить ярлык в любую директор.}

  WFileName := Directory + '/ShortCut1.lnk';
  MyPFile.Save(PWChar(WFileName), False);
  MyReg.Free;
end;

Проект Delphi World © Выпуск 2002 - 2017
Автор проекта: Эксклюзивные курсы программирования