Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#7

AW: Verknüpfung von einem Ordner erstellen

  Alt 7. Mär 2017, 23:21
Der Code ist seit Jahren bei uns erfolgreich im Einsatz, allerdings füllen wir die Parameter zufällig auch richtig.
Als LinkFilename wird da das Ergebnis eines SaveDialogs reingegeben, welcher nur korrekte Dateinamen in existierenden Pfaden mit Schreibrechten raus gibt. :stipid:

CreateLinkFile('D:\Anfragen\9220\16248\Angebot.lnk', 'D:\Anfragen\9220\Angebot', '', '');

D:\Anfragen\9220\16248 ist ein Verzeichnis und keinen Dateiname?

Wenn ja, dann knallt es im PersistFile.Save mit Zugriff verweigert, was leider nicht ausgewertet wurde.
Delphi-Quellcode:
procedure CreateLinkFile(LinkFilename, Filename, Args, Description: string);
procedure Check(H: HResult);
  begin
    if not Succeeded(H) then
      RaiseLastOSError(H);
  end;
var
  ShellLink: IShellLink;
  PersistFile: IPersistFile;
begin
  Check(CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_INPROC_SERVER, IID_IShellLink, ShellLink));
  Check(ShellLink.SetPath(PChar(Filename)));
  Check(ShellLink.SetArguments(PChar(Args)));
  Check(ShellLink.SetDescription(PChar(Description)));
  Check(ShellLink.SetWorkingDirectory(PChar(ExtractFilePath(Filename))));
  Check(ShellLink.QueryInterface(IPersistFile, PersistFile));
  Check(PersistFile.Save(PChar(LinkFilename), True));
end;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 7. Mär 2017 um 23:27 Uhr)
  Mit Zitat antworten Zitat