[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]