修改桌面快捷方式问题!

vargent7 2004-03-08 11:34:59
以下是我得程序,目的是修改一个我选定的快捷方式的指向,例如指向'C:\windows\notepad.exe',实际失败,现象是操作后没任何东西被修改
private
FilePath:string;
SLI:TShellLinkInfo;
procedure TForm1.DestopFileListClick(Sender: TObject);
begin//这里是为了从一个列举了桌面快捷方式的listbox里面选出要改的
edFileName.Text := DestopFileList.Items[DestopFileList.ItemIndex];
GetShellLinkInfo(FilePath+edFileName.Text,SLI);
edLinkTo.Text:=SLI.PathName;//快捷方式的指向显示在edLinkTo
end;
//---------------------------------------------------------------------
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
edNewLink.Text:=OpenDialog1.FileName;//这里选择新的指向的文件
end;
//-----------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
var
SL: IShellLink;
PF: IPersistFile;
LnkName: WideString;
FilesPath: array[0..MAX_PATH] of char;
begin
if edNewLink.Text<>'' then
begin
OleCheck(CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_INPROC_SERVER,
IShellLink, SL));
PF := SL as IPersistFile;
OleCheck(PF.Load(PWideChar(SLI.PathName), STGM_SHARE_DENY_WRITE));
//上面导入要改的文件,下面开始更新???是不是这里错了
with SLI,SL do
OleCheck(SL.Resolve(0,SLR_ANY_MATCH or SLR_UPDATE or SLR_NO_UI));
OleCheck(SL.SetPath(PChar(edNewLink.Text)));// set link path to proper file
SHGetSpecialFolderPath(0,FilesPath,1,True);
LnkName :=string(FilesPath) +'\'+ChangeFileExt(edNewLink.Text, '.lnk');
end;
PF.Save(PWideChar(LnkName), True);
end;
end.
...全文
77 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复

5,391

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧