控制面板中 添加或删除程序的效果 (图标取不到的问题)

tjchywxc 2009-05-04 04:03:13
想模仿控制面板中 添加或删除程序的效果
我现在也知道是从这个链值下来取数据
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall'

在这个项下 DisplayIcon键值有的软件有,有的软件没有,这样就造成取到的软件有的有图标,有的没图标。但是添加删除程序都能取得到图标,这要如何做啊
...全文
140 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hongqi162 2009-05-04
  • 打赏
  • 举报
回复
有的有DisplayIcon,如果没有路径的看看从环境变量里面获得路径再找一下exe文件
hongqi162 2009-05-04
  • 打赏
  • 举报
回复
uses
shellapi;
tjchywxc 2009-05-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hongqi162 的回复:]
Delphi(Pascal) codeprocedureTForm1.getIcon;varCount : Integer;
FileName : String;
i:integer;beginif( FileName<>Edit1.Text )thenbeginFileName:=Edit1.Text;
I :=0;
Count :=ExtractIcon( Application.Handle, PChar(FileName),
$FFFFFFFF );endelseInc(I);if( I<Count )thenImage1.Picture.Icon.Handle :=ExtractIcon( Application.Handle, PChar(FileName), I )elseShowMessage(’没有找到!’ );…
[/Quote]

是这样的,在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 项下,如果能得到程序的主执行程序也是能取得图标的,但是在这个项下,有的程序连安装路径都没有,更别说主执行程序的名称了,如果没有主执行程序的文件名,怎么取图标啊
hongqi162 2009-05-04
  • 打赏
  • 举报
回复
procedure TForm1.getIcon; 
var
Count : Integer;
FileName : String;
i:integer;
begin
if( FileName <> Edit1.Text ) then
begin
FileName:=Edit1.Text;
I := 0;
Count := ExtractIcon( Application.Handle, PChar(FileName),
$FFFFFFFF );
end
else
Inc(I);
if( I < Count ) then
Image1.Picture.Icon.Handle :=
ExtractIcon( Application.Handle, PChar(FileName), I )
else
ShowMessage(’没有找到!’ );
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
getIcon;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
opendialog1.Execute;
edit1.Text:=opendialog1.FileName;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
savedialog1.Execute;
image1.Picture.SaveToFile(savedialog1.FileName);

end;



参考这个代码获得exe文件的icon,如果没有icon你可以自己弄个默认的,这个就无所谓了

1,183

社区成员

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

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