function CreateShortcut(DestinationFolder, TargetFile, LinkName, LinkDescription: String): Boolean; var IObject: IUnknown; //uses System unit ISLink: IShellLink; //uses ShlObj unit IPFile: IPersistFile; //uses ActiveX unit LinkPath: String; begin CreateShortcut := False;
LinkPath := '';
try IObject := CreateComObject(CLSID_ShellLink); //uses ComObj unit ISLink := IObject as IShellLink; IPFile := IObject as IPersistFile;
with ISLink do begin SetPath(PChar(TargetFile)); //uses ShlObj unit SetWorkingDirectory(PChar(ExtractFilePath(TargetFile))); //uses ShlObj unit If LinkDescription <> ''then SetDescription(PChar(LinkDescription)); //uses ShlObj unit end;