问题的提出:由于安装程序制作后,在桌子面上建立的快捷方式没有起始位置。于是我想在应用程序启动后将目标应用程序的路径部分自动写进该快捷方式的起始位置、
不知道用程序如何实现。

解决方案 »

  1.   

    uses
      ShlObj, ComObj, ActiveXfunction GetCurPath(): string;
    var
      Reg: TRegistry;
    begin
      Reg := TRegistry.Create(HKEY_CURRENT_USER);
      try
        Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders', False);
        Result := Reg.ReadString('Desktop');
        Reg.CloseKey;
      finally
        Reg.Free;
      end;
    end;procedure CreateLink;
    var
       MyObject : IUnknown;
       MySLink : IShellLink;
       MyPFile : IPersistFile;
       WFileName : WideString;
    begin
      WFileName := GetCurPath + '\快捷方式.lnk'; //快捷方式的路径
      if FileExists(WFileName) then Exit;
      MyObject := CreateComObject(CLSID_ShellLink);
      MySLink := MyObject as IShellLink;
      MyPFile := MyObject as IPersistFile;
      MySLink.SetDescription('快捷方式'); //描述
      MySLink.SetWorkingDirectory(PAnSiChar(ExtractFilePath(Application.ExeName))); //起始位置
      MySLink.SetPath(PAnSiChar('http://www.google.com')); //目标
      MyPFile.Save(PWChar(WFileName), false);
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      CreateLink
    end;
      

  2.   

    在应用程序的工作目录,只要将其发送到桌子面上就可以达到效果了,可为什么WISE安装程序就不能达到这种效果呢(出现空的起始位置)。
      

  3.   

    那你用什么呀给我发一份吧,先谢谢了[email protected]