Delphi怎么取卸载程序的图标啊???

gxpang 2005-10-01 07:30:15
Delphi怎么取卸载程序的图标啊,

const //显示安装过的程序软件=====================================
Cur ='\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall';

var
reg : TRegistry;
List1 : TStringList;
List2 : TStringList;
i,n,m ,mIcon : integer; //n为程序名的,M为卸载路径的,mIcon为图标的
mItem:TListItem;
//-------下面两个用于载入图标的处理-----
FileName: AnsiString;
Ico:TIcon;
begin
form1.ListView1.Clear ;//先清除ListView
reg := TRegistry.Create;
List1 := TStringList.Create;
List2 := TStringList.Create;
//载入子键
with Reg do
begin
RootKey := HKEY_LOCAL_MACHINE;
OpenKey(Cur,false);
GetKeyNames(List1);
end;

for i := 0 to List1.Count -1 do
begin

reg.OpenKey(Cur + '\' +List1.Strings[i],false);
reg.GetValueNames(List2);
//显示安装程序以 DisplayName排序
n:=List2.IndexOf('DisplayName');
m:=List2.IndexOf('UninstallString');
mIcon:=List2.IndexOf('DisplayIcon');
if (n <> -1) and (List2.IndexOf('UninstallString')<>-1) then
begin
//显示已经安装程序名称
mItem:=form1.ListView1.Items.Add();
mItem.Caption :=(reg.ReadString(List2.Strings[n])); //显示程序名
// Ico:=TIcon.Create;
// ico:=(reg.ReadString(List2.Strings[mIcon]));//显示程序图标的
// mItem.ImageIndex:=ImageList1.AddIcon(ico);
mItem.SubItems.Add(reg.ReadString(List2.Strings[m]));//显示程序卸载路径
end;
end;
//释放对象
List1.Free;
List2.Free;
reg.CloseKey;
reg.Destroy;
end;

如上代码,取出系统安装过的程序名及路径,但图标取不出来,怎么办啊,请各位请点一下下,先谢谢啦!!!!!!!!!
...全文
86 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
naughtyboy 2005-10-04
  • 打赏
  • 举报
回复
不太明白^{^
如果只是为了提取图标
根据上面已经得到得程序路径(程序以及卸载程序)就可以完成了
ico : TIcon;
.....
ico.Create;
try
ico.Handle := ExtractIcon(hinstance,FullPath,0);
finally
ico.free;
end;
.....
FullPath分别为程序以及卸载程序指定的全路径
gxpang 2005-10-02
  • 打赏
  • 举报
回复

不会吧,没有帮我 ^^

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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