[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]

    >How do you create a shortcut in code, given a program executable and its
    path?

    Try the following code to see if it helps.

    implementation
    {$R *.DFM}

    uses  ShlObj, ActiveX, ComObj, Registry;

    procedure TForm1.Button1Click(Sender: TObject);
    var
      MyObject: IUnknown;   // IUnknown interface
      MySLink: IShellLink; {The IShellLink interface provides an interface to
                            allow an application to create and resolve shell
    links}
      MyPFile: IPersistFile; {The IPersistFile interface provides methods for an
                              object to load and save itself in a disk file }
      FileName: String;
      Directory: String;
      WFileName: WideString;
      MyReg: TRegIniFile;
    begin
      MyObject := CreateComObject(CLSID_ShellLink);
      MySLink := MyObject as IShellLink;    // See on line help for IShellLink
    interface
      MyPFile := MyObject as IPersistFile; // See on line help for IPersistFile
    interface
      FileName := 'NOTEPAD.EXE';
      with MySLink do
        begin
          SetArguments('C:\AUTOEXEC.BAT');
          SetPath(PChar(FileName));
          SetWorkingDirectory(PChar(ExtractFilePath(FileName)));
        end;
      MyReg :=
    TRegIniFile.Create('Software\MicroSoft\Windows\CurrentVersion\Explorer');
      // Put the shortcut on your desktop
      Directory := MyReg.ReadString('Shell Folders','Desktop','');

      // put the shortcut on your start menu
      { Directory := MyReg.ReadString('Shell Folders','Start Menu','')+
        CreateDir(Directory); }

      WFileName := Directory + '\NotePad.lnk';
      MyPFile.Save(PWChar(WFileName),False);
      MyReg.Free;
    end;

[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]