你可以参看以下代码
unit Unit1; 
interface
 uses 
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,     Dialogs, StdCtrls;
 type 
TForm1 = class(TForm) 
  Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private 
  { Private declarations }
 public 
  { Public declarations }
 end; 
var
   Form1: TForm1; 
implementation 
{$R *.DFM} 
uses ShlObj, ActiveX, ComObj, Registry; 
procedure TForm1.Button1Click(Sender: TObject); 
var
   MyObject : IUnknown; 
   MySLink : IShellLink;
    MyPFile : IPersistFile;
     FileName : String; 
   Directory : String; 
   WFileName : WideString;
     MyReg : TRegIniFile; 
begin
   MyObject := CreateComObject(CLSID_ShellLink);
   MySLink := MyObject as IShellLink;
   MyPFile := MyObject as IPersistFile;
   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'); 
 Directory := MyReg.ReadString('Shell Folders','Desktop','');  Directory := MyReg.ReadString('Shell Folders','Start Menu','')+  CreateDir(Directory);
 WFileName := Directory+'\FooBar.lnk';
 MyPFile.Save(PWChar(WFileName),False);
 MyReg.Free;
 end;
 end.

解决方案 »

  1.   

    看下面的代码:
    const
      CCH_MAXNAME=255;
      LNK_RUN_MIN=7;
      LNK_RUN_MAX=3;
      LNK_RUN_NORMAL=1;type LINK_FILE_INFO=record
             FileName:array[0..MAX_PATH] of char;
             WorkDirectory:array[0..MAX_PATH] of char;
             IconLocation:array[0..MAX_PATH] of char;
             IconIndex:integer;
             Arguments:array[0..MAX_PATH] of char;
             Description:array[0..CCH_MAXNAME] of char;
             ItemIDList:PItemIDList;
             RelativePath:array[0..255] of char;
             ShowState:integer;
             HotKey:word;
         end;function CreateLinkFile(const info:LINK_FILE_INFO;const DestFileName:string=''):boolean;
    var
     anobj:IUnknown;
     shlink:IShellLink;
     pFile:IPersistFile;
     wFileName:widestring;
    begin
     wFileName:=destfilename;
     anobj:=CreateComObject(CLSID_SHELLLINK);
     shlink:=anobj as IShellLink;
     pFile:=anobj as IPersistFile;
     shlink.SetPath(info.FileName);
     shlink.SetWorkingDirectory(info.WorkDirectory);
     shlink.SetDescription(info.Description);
     shlink.SetArguments(info.Arguments);
     shlink.SetIconLocation(info.IconLocation,info.IconIndex);
    // shlink.SetIDList(info.ItemIDList);
     shlink.SetHotkey(info.HotKey);
     shlink.SetShowCmd(info.ShowState);
     shlink.SetRelativePath(info.RelativePath,0);
     if DestFileName='' then
      wFileName:=ChangeFileExt(info.FileName,'lnk');
     result:=succeeded(pFile.Save(pwchar(wFileName),false));
    end;
      

  2.   

    调用的时候,设置Info.WorkDirectory就可以了。
      

  3.   

    3q,加分
    qiubolecn(来自差生市)也有辛苦分