Verknüpfung (*.lnk) zu einer Datei erstellen |
|
| System | Win9x, WinNT, Win2000, WinXP, Vista, Win7 |
|---|---|
| Ab Delphi-Version | Delphi 1 |
| Letzte Änderung | 28.09.2010 |
Mithilfe folgender Funktion kann man eine Verknüpfung (*.lnk-Datei) zu einer Datei erstellen. Die Funktion gibt bei Erfolg True zurück und erwartet drei Parameter: Den kompletten Dateinamen der Datei zu der verknüpft werden soll, den kompletten Dateinamen zu der zu erstellenen LNK-Datei und ein Text, der Verknüpfung näher beschreibt. Dieser Beschreibungstext ist allerdings nicht zwingend erforderlich.
Zudem müssen die Units ShlObj, ActiveX und ComObj per uses-Klausel eingebunden werden.
var
psl : IShellLink;
ppf : IPersistFile;
wsz : PWideChar;
begin
result:=false;
if SUCCEEDED(CoCreateInstance(CLSID_ShellLink, nil,
CLSCTX_inPROC_SERVER, IID_IShellLinkA, psl)) then
begin
psl.SetPath(PChar(AFilename));
psl.SetDescription(PChar(ADescription));
psl.SetWorkingDirectory(PChar(ExtractFilePath(AFilename)) ;);
if SUCCEEDED(psl.QueryInterface(IPersistFile, ppf)) then
begin
GetMem(wsz, MAX_PATH*2);
try
MultiByteToWideChar(CP_ACP, 0, PChar(ALNKFilename), -1, wsz, MAX_PATH);
ppf.Save(wsz, true);
result:=true;
finally
FreeMem(wsz, MAX_PATH*2);
end;
end;
end;
end;
Weitere Einstellungsmöglichkeiten für die Verknüpfungen finden Sie in der PSDK unter dem Stichwort "IShellLink". In der obigen Funktion verwenden wir die Routinen SetPath (Verzeichnis der zu verknüpfenden Datei), SetDescription (Beschreibungstext) und SetWorkingDirectory (Arbeitsverzeichnis).
Aufgerufen werden kann die Funktion beispielsweise so:
begin
if CreateLink('C:\WINDOWS\notepad.exe', // Ziel
'c:\test.lnk', // Speicherort der verknüpfung
'Verknüpfung zu Notepad') then // Verknüpfungs Beschreibung
MessageDlg('Link erzeugt', mtInformation, [mbOk], 0);
end;