Как создать ярлык 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. Второй параметр в вызове этой функции наиболее важный: целочисленная константа, которая представляет специальные папки.
Комментарии