Wie kann ich Programmgruppen und Shortcuts erzeugen?
Im folgenden sind die drei Funktionen CreateFolder, CreateLink und SpecialFolder definiert.
Erstellen eines normalen (!) Ordners:
CreateFolder(<Name>);
<Name> : Komplette Pfadangabe
Beispiel zum Erstellen einer Programmgruppe 'Neu' im Ordner Programme (oder 'Program Files'):
CreateFolder(SpecialDirectory(CSIDL_Programs)+'Neu');
CreateLink(<Dateiname>,<Shortcutname>,<Shortcuttitel>);
<Dateiname> : Datei, auf die der Shortcut verweisen soll
<Shortcutname> : Dateiname des Shortcuts (mit Endung .lnk)
<Shortcuttitel> : Beschreibung des Shortcuts
Beispiel zum erstellt eines Links mit dem Titel "Programm" auf die Datei "C:\Test\Programm.exe" in der Autostart-Gruppe:
CreateLink('C:\Test\Programm.exe',SpecialDirectory(CSIDL_Startup)+'Programm.lnk','tolles Programm');
SpecialDirectory(<ID>);
<ID> : Identifier für Systemordner, mögliche Werte:
{$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;
function CreateFolder(Foldername:string):boolean;
begin
SetLastError(0);
CreateDirectory(PChar(Foldername), nil );
Result := (GetLastError()=0) or (GetLastError()=ERROR_ALREADY_EXISTS);
end;
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;
| Delphi 1 | Delphi 2 | Delphi 3 | Delphi 4 |
| nicht getestet | Version nicht betroffen | getestet |
siehe auch: