procedure CreateLink(ProgramPath, ProgramArg, LinkPath, Descr: String);
var
AnObj: IUnknown;
ShellLink: IShellLink;
AFile: IPersistFile;
FileName: WideString;
begin
if UpperCase(ExtractFileExt(LinkPath))<>'.LNK' then //检查扩展名是否正确
begin
raise Exception.Create('快捷方式的扩展名必须是"LNK"!');
end;
try
OleInitialize(nil);
AnObj := CreateComObject(CLSID_ShellLink);
ShellLink := AnObj as IShellLink;
AFile := AnObj as IPersistFile;
ShellLink.SetPath(PChar(ProgramPath));
ShellLink.SetArguments(PChar(ProgramArg));
ShellLink.SetWorkingDirectory(PChar(ExtractFilePath(ProgramPath)));
ShellLink.SetDescription(PChar(Descr));
FileName := LinkPath;
AFile.Save(PChar(FileName), False);
finally
OleUninitialize
end;
end;
这个是我以前写的一个创建程序快捷方式的方法,使用了delphi下的ComObj,ActiveX,ShlObj三个接口文件进行操作。本想转入平台重新修正编译。可是接口文件无法编译过去啊!请在线KF帮忙该下接口部分! |