|

楼主 |
发表于 2013-12-4 09:12:16
|
显示全部楼层
本帖最后由 qqqqq 于 2013-12-4 09:13 编辑
2.在桌面和开始菜单上建立快捷方式
uses shlobj;
function MakeLink(filename, linkname, programname: string): Boolean;
var
tmpObject: IUnknown;
tmpSLink: IShellLink;
tmpPFile: IPersistFile;
PIDL: PItemIDList;
StartupDirectory: array[0..MAX_PATH] of Char;
StartupFilename: string;
LinkFilename,directory: wideString;
s2,s1:string;
begin
result:=false;
StartupFilename:=filename;
if not FileExists(utf8toansi(StartupFilename)) then Exit;
tmpObject := CreateComObject(CLSID_ShellLink);
tmpSLink := tmpObject as IShellLink;
tmpPFile := tmpObject as IPersistFile;
with tmpSLink do
begin
SetArguments('') ; //设置命令行参数
SetDescription(''); //描述提示
SetPath(pChar(StartupFilename));//设置程序全路径
SetWorkingDirectory(pChar(ExtractFilePath(StartupFilename))); //设置工作目录
end;
if Trim(programname)='' then
begin
//CSIDL_DESKTOP C:\Documents and Settings\Administrator\桌面
SHGetSpecialFolderLocation(0,CSIDL_DESKTOP,PIDL);
SHGetPathFromIDList(PIDL,StartupDirectory);
directory:=StartupDirectory;
end
else
begin
//CSIDL_PROGRAMS C:\Documents and Settings\Administrator\「开始」菜单\程序
SHGetSpecialFolderLocation(0,CSIDL_PROGRAMS,PIDL);
SHGetPathFromIDList(PIDL,StartupDirectory);
s1:='\'+ utf8toansi(programname) ;
directory:=StartupDirectory+s1;
if not DirectoryExists(WideString(directory)) then
CreateDir(WideString(directory));
end;
s2 :='\'+utf8toansi(Linkname)+'.lnk' ;
LinkFilename := directory+s2 ;
if FileExists(LinkFileName) then
DeleteFile(LinkFilename); // 快捷方式己存在,不能重复建立'
tmppfile.Save(pwchar(LinkFilename),false);
result:=true; // 快捷方式己建立','提示
end;
|
|