Как создать ярлык Windows (.LNK)
Создание ярлыков
Добавьте кнопку (Button1) на форму (Form1) и напишите этот код:
uses ShlObj, ActiveX, ComObj;
  { ... }
procedure TForm1.Button1Click(Sender: TObject) ;
var
   IObject : IUnknown;
   ISLink : IShellLink;
   IPFile : IPersistFile;
   PIDL : PItemIDList;
   InFolder : array[0..MAX_PATH] of Char;
   TargetName : String;
   LinkName : WideString;
begin
   TargetName := 'c:\windows\calc.exe';
   { Используйте TargetName:=ParamStr(0), который
   возвращает путь и имя файла приложения, чтобы создать
   связь с Вашим Приложением }
   IObject := CreateComObject(CLSID_ShellLink) ;
   ISLink := IObject as IShellLink;
   IPFile := IObject as IPersistFile;
   with ISLink do
   begin
     SetPath(pChar(TargetName)) ;
     SetWorkingDirectory(pChar(ExtractFilePath(TargetName))) ;
   end;
   // Если Вы хотите поместить ярлык на Desktop
   SHGetSpecialFolderLocation(0, CSIDL_DESKTOPDIRECTORY, PIDL) ;
   SHGetPathFromIDList(PIDL, InFolder) ;
   {
    или если хотите, чтобы ярлык появился
    в некоторой "неспециальной" папке, например:
    InFolder := 'c:\SomeFolder'
   }
   LinkName := InFolder + '\Delphi Created Link.lnk';
   IPFile.Save(PWChar(LinkName), false) ;
end;
В этом примере, ссылка на Calc.exe создается на Рабочем столе. Чтобы получить папку Desktop, мы должны использовать вызов функции API SHGetSpecialFolderLocation. Второй параметр в вызове этой функции наиболее важный: целочисленная константа, которая представляет специальные папки.
Комментарии