想模仿控制面板中 添加或删除程序的效果 
我现在也知道是从这个链值下来取数据
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall'在这个项下 DisplayIcon键值有的软件有,有的软件没有,这样就造成取到的软件有的有图标,有的没图标。但是添加删除程序都能取得到图标,这要如何做啊

解决方案 »

  1.   

    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你可以自己弄个默认的,这个就无所谓了
      

  2.   


    是这样的,在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 项下,如果能得到程序的主执行程序也是能取得图标的,但是在这个项下,有的程序连安装路径都没有,更别说主执行程序的名称了,如果没有主执行程序的文件名,怎么取图标啊
      

  3.   

    有的有DisplayIcon,如果没有路径的看看从环境变量里面获得路径再找一下exe文件