Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

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

AW: Verknüpfung von einem Ordner erstellen

  Alt 7. Mär 2017, 22: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;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

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