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