Einzelnen Beitrag anzeigen

ringli

Registriert seit: 7. Okt 2004
509 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: IShellLink SetPath gibt E_INVALIDARG zurück

  Alt 20. Jun 2015, 20:48
Ich habe hier den folgenden Code gefunden:
Delphi-Quellcode:
uses ShlObj, ActiveX, ComObj;
 ...
 procedure TForm1.Button1Click(Sender: TObject) ;
 var
    IObject : IUnknown;
    ISLink : IShellLink;
    IPFile : IPersistFile;
    PIDL : PItemIDList;
    InFolder : array[0..MAX_PATH] of Char;
    TargetName : String;
    LinkName : WideString;
 begin
    TargetName := 'calc.exe';
 
    {Use TargetName:=ParamStr(0) which
    returns the path and file name of the
    executing program to create a link to your
    Application}

 
    IObject := CreateComObject(CLSID_ShellLink) ;
    ISLink := IObject as IShellLink;
    IPFile := IObject as IPersistFile;
 
    with ISLink do
    begin
      SetPath(pChar(TargetName)) ;
      //SetWorkingDirectory(pChar(ExtractFilePath(TargetName))) ;
    end;
 
    // if we want to place a link on the Desktop
    SHGetSpecialFolderLocation(0, CSIDL_DESKTOPDIRECTORY, PIDL) ;
    SHGetPathFromIDList(PIDL, InFolder) ;
 
    {
    or if we want a link to appear in
    some other, not-so-special, folder:
    InFolder := 'c:\SomeFolder'
    }

 
    LinkName := InFolder + '\Delphi Created Link.lnk';
    IPFile.Save(PWChar(LinkName), false) ;
 end;
Der Code scheint auch ohne Pfadangabe zu funktionieren. Zumindest mit der calc.exe...
  Mit Zitat antworten Zitat