Zitat:
Was meinst du mit "ohne diesen abspeichern zu müssen"?
Ich meine die Informationen aus der Verknüpfung auslesen.
Bei WShell (Scrip) will ich nicht verwenden muss man die Verknüpfung erst erstellen um daraus die Informationen zu extrahieren.
Bei IShellLink geht das ohne.
Habe deshalb die Funktion hier anpasst.
Ich übergebe die Verknüpfung und den Rest macht die Funktion.
Delphi-Quellcode:
procedure TWin32ShortCut.LoadShortCut(LnkName: WideString);
var
FP: array[0..MAX_PATH * 2] of Char;
pfd: TWin32FindDataW;
showval: integer;
psfi: TSHFileInfo;
begin
ClearValues;
FPersistFile.Load(PWideChar(LnkName), 0);
FillChar(FP, Sizeof(FP), 0);
FShellLink.GetPath(FP, Sizeof(FP), pfd, 0);
FAppPath := String(FP);
FShellLink.GetIDList(Fpidl);
FillChar(FP, Sizeof(FP), 0);
FShellLink.GetWorkingDirectory(FP, Sizeof(FP));
FWorkDirectory := String(FP);
FillChar(FP, Sizeof(FP), 0);
FShellLink.GetArguments(FP, Sizeof(FP));
FArguments := String(FP);
FillChar(FP, Sizeof(FP), 0);
FShellLink.GetDescription(FP, Sizeof(FP));
FDescription := String(FP);
FShellLink.GetShowCmd(showval);
FShowCmd := cvtTShowType(showval);
FShellLink.GetHotkey(FHotKey);
HotKeyToShortCut(FHotKey, FHotKeyCtrl);
FillChar(FP, Sizeof(FP), 0);
FShellLink.GetIconLocation(FP, Sizeof(FP), FIconIndex);
FIconPath := String(FP);
// based on icon information tries to load the icon itself into Icon type.
if FIconPath = '' then // regular explorer association.
begin
SHGetFileInfo(PChar(FAppPath), 0, psfi, sizeof(psfi), SHGFI_ICON);
FIcon.Handle := psfi.hIcon;
end
else // specified in file, go get it.
FIcon.Handle := ExtractIcon(hInstance, PChar(FIconPath), FIconIndex);
end;
Ich brauche die Daten nachher um die Verknüpfung auf der Bar ausführen zu können.
Zitat:
Suchst Du sowas?
Nein Danke hab das richtige schon gefunden muss die nur meinen Vorstellungen entsprechend anpassen.
Ich möchte ja keinen erstellen sondern die Informationen daraus auslesen.
Warum alles neu erfinden
gruss