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