//在桌面上建立快捷方式
procedure TForm1.Button1Click(Sender: TObject);
var
tmpObject : IUnknown;
tmpSLink : IShellLink;
tmpPFile : IPersistFile;
PIDL : PItemIDList;
StartupDirectory : array[0..MAX_PATH] of Char;
StartupFilename : String;
LinkFilename : WideString;
begin
StartupFilename := 'c:\windows\notepad.exe';
tmpObject := CreateComObject(CLSID_ShellLink);//创建建立快捷方式的外壳扩展
tmpSLink := tmpObject as IShellLink;//取得接口
tmpPFile := tmpObject as IPersistFile;//用来储存*.lnk文件的接口
tmpSLink.SetPath(pChar(StartupFilename));//设定notepad.exe所在路径
tmpSLink.SetWorkingDirectory(pChar(ExtractFilePath(StartupFilename)));//设定工作目录
SHGetSpecialFolderLocation(0,
CSIDL_DESKTOPDIRECTORY,
PIDL);//获得桌面的Itemidlist
SHGetPathFromIDList(PIDL,
StartupDirectory);//获得桌面路径
LinkFilename := StartupDirectory + '\MyNotepad.lnk';
tmpPFile.Save(pWChar(LinkFilename),FALSE);//保存*.lnk文件
end;

解决方案 »

  1.   

    程序在开始运行时在桌面上创建快捷方式OnForm1Create();
    begin
      创建快捷方式
    end;
      

  2.   

    抄了一段uses
      ...,ActiveX, ComObj, ShlObj;procedure TForm1.FormCreate(Sender: TObject);
    var
      ShLink: IShellLink;
      PFile: IPersistFile;
      FileName: WideString;
    begin
      FileName := ExtractFilePath(Application.ExeName) + '快捷方式 '
        + ExtractFileName(Application.ExeName) + '.lnk';
      if FileExists(FileName) then Exit;
      ShLink := CreateComObject (CLSID_ShellLink) as IShellLink;
      PFile := ShLink as IPersistFile;
      ShLink.SetPath(PChar(Application.ExeName));
      ShLink.SetWorkingDirectory(PChar(ExtractFilePath(Application.ExeName)));
      PFile.Save(PWChar(FileName), False);
    end;