{$IFDEF VER90} uses OLE2, ComObj, ShlObj; {$ELSE} uses ActiveX, ComObj, ShlObj; {$ENDIF} const IID_IPersistFile : TGUID=(D1:$0000010B;D2:$0000;D3:$0000;D4:($C0,$00,$00,$00,$00,$00,$00,$46)); function SpecialDirectory(ID:integer):string; var pidl : PItemIDList; Path : PChar; begin if SUCCEEDED(SHGetSpecialFolderLocation(0,ID,pidl)) then begin Path:=StrAlloc(max_path); SHGetPathFromIDList(pidl,Path); Result:=String(Path); if Result[length(Result)]<>'\' then Result:=Result+'\'; end; end; {SpecialDirectory} Function CreateFolder(Foldername:string):boolean; begin Result:=false; SetLastError(0); CreateDirectory(PChar(Foldername), nil ); if (GetLastError()=0) or (GetLastError()=ERROR_ALREADY_EXISTS) then Result:=true; end; {CreateFolder} function CreateLink(lpszPathObj,lpszPathLink,lpszDesc:string):Boolean; var psl : IShellLink; ppf : IPersistFile; begin Result:=false; if SUCCEEDED(CoCreateInstance(CLSID_ShellLink,nil,CLSCTX_INPROC_SERVER, IID_IShellLinkA, psl)) then begin psl.SetPath(PChar(lpszPathObj)); psl.SetDescription(PChar(lpszDesc)); if SUCCEEDED(psl.QueryInterface(IID_IPersistFile,ppf)) then begin ppf.Save(StringToOLEStr(lpszPathLink),TRUE); Result:=true; end; end; end; {CreateLink} Aufrufe: CreateFolder(); : Komplette Pfadangabe der Programmgruppe CreateLink(,,); : Datei, auf die der Shortcut verweisen soll : Dateiname des Shortcuts (Endung : .lnk) : Beschreibung des Shortcuts SpecialDirectory(); : Identifier für Systemordner, mögliche Werte: Autostart-Gruppe : CSIDL_Startup Startmenü : CSIDL_Startmenu Programs-Menü : CSIDL_Programs Persönliche Favoriten : CSIDL_Favorites Desktop : CSIDL_Desktopdirectory "Send an"-Verzeichnis : CSIDL_Sendto Beispiele : CreateFolder(SpecialDirectory(CSIDL_Programs)+'Neu'); ->Erstellt die Programmgruppe "Neu" im Programs-Menü. CreateLink('C:\Test\Programm.exe',SpecialDirectory(CSIDL_Startup)+'Programm.lnk','Programm'); ->Erstellt einen Link it dem Titel "Programm" auf die Datei "C:\Test\Programm.exe" in der Autostart-Gruppe.