请问创建文件的快捷方式用什么函数?(50分)

  • 主题发起人 主题发起人 lfqbl
  • 开始时间 开始时间
L

lfqbl

Unregistered / Unconfirmed
GUEST, unregistred user!
请问创建文件的快捷方式用什么函数?在程序中又怎样得到快捷方式中目标的内容?
 
//在桌面上建立快捷方式
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;

COPY以前的回复的,事实上你问问题前最好搜索一下,省下不少分的
 
如果不建在桌面上,在其他的某一个文件夹,应该怎么做?先谢谢了。
 
我现在可以创建快捷方式了,但我用tmpSLink.SetPath(pChar(StartupFilename+' 7'))后,
程序就不对了,而且在目标中多了一对引号,而直接在快捷方式的目标中加一个参数(如' 7'),程序不受
影响。请问这该怎么办?
 
后退
顶部