Winne:
Vill man göra det lätt för sig så bör man nog använda renamefile ;).
Genväg:
Hittade en unit på disken som borde fixa detta. Eftersom jag sparat den antar jag att den funkar. Du kan ju testa.
Om allt funkar så borde koden bli
CreateShortcut('c:\minfil.exe',_SENDTO);
unit ShortcutUnit;
interface
uses
Registry, ShlObj, ActiveX, ComObj, Sysutils;
type
ShortcutType = (_DESKTOP, _QUICKLAUNCH, _SENDTO, _STARTMENU);
procedure CreateShortcut(FileName: string; Location: ShortcutType);
implementation
procedure CreateShortcut(FileName: string; Location: ShortcutType);
{ proc to create a shortcut on the desktop or startmenu. }
var
MyObject: IUnknown;
MySLink: IShellLink;
MyPFile: IPersistFile;
Directory, LinkName: string;
WFileName: WideString;
MyReg, QuickLaunchReg: TRegIniFile;
begin
MyObject := CreateComObject(CLSID_ShellLink);
MySLink := MyObject as IShellLink;
MyPFile := MyObject as IPersistFile;
MySLink.SetPath(PChar(FileName));
MyReg :=
TRegIniFile.Create('Software\MicroSoft\Windows\CurrentVersion\Explorer');
try
LinkName := ChangeFileExt(FileName, '.lnk');
LinkName := ExtractFileName(LinkName);
case Location of
_DESKTOP: Directory := MyReg.ReadString('Shell Folders', 'Desktop','');
_STARTMENU: Directory := MyReg.ReadString('Shell Folders', 'Start Menu', '');
_SENDTO: Directory := MyReg.ReadString('Shell Folders', 'SendTo', '');
_QUICKLAUNCH:
begin
QuickLaunchReg :=
TRegIniFile.Create('Software\MicroSoft\Windows\CurrentVersion\GrpConv');
try
Directory := QuickLaunchReg.ReadString('MapGroups', 'Quick Launch', '');
finally
QuickLaunchReg.Free;
end;
end;
end;
if Directory <> '' then
begin
WFileName := Directory + '\' + LinkName;
MyPFile.Save(PWideChar(WFileName), False);
end;
finally
MyReg.Free;
end;
end;
end.
[Redigerat av WiNNe den 11 jan 2001]