各位大哥,帮我看一下我的下面的读取注册表中的图标的方法为什么错呢?
procedure TForm1.Button1Click(Sender: TObject);
Var
  Reg: TRegistry;
Begin
  Reg := TRegistry.Create;
  Reg.RootKey := HKEY_CLASSES_ROOT;
  If Reg.OpenKey('\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\DefaultIcon', False) Then
    image1.Picture.Icon.LoadFromFile(reg.ReadString(''));
    {如果上句改成
    image1.Picture.Icon.LoadFromFile('C:\WIN2000\Explorer.exe,0 ')
    也是不行。请问怎么载入这种资源的图标呢?还有,DefaultIcon的类型怎么
    是REG_EXPAND_SZ型呢,这种类型怎么操作呢?}
  Reg.Free;
end;

解决方案 »

  1.   

    uses ShellAPI;function GetIconFromFile(FileName: String; IconIndex: Word = 0): TIcon;
    begin
      Result := TICon.Create;
      Result.Handle := ExtractIcon(0,PChar(FileName),IconIndex);
    end;procedure TForm1.Button1Click(Sender: TObject);
    Var
      Reg: TRegistry;
    Begin
      Reg := TRegistry.Create;
      Reg.RootKey := HKEY_CLASSES_ROOT;
      If Reg.OpenKey('\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}
    \DefaultIcon', False) Then
        image1.Picture.Icon := GetIconFromFile(reg.ReadString(''), 0);
      Reg.Free;
    end;—————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    —————————————————————————————————
      

  2.   

    上面的GetIconFromFile(reg.ReadString(''), 0);是简写,对于reg.ReadString('')得到的
    'C:\WIN2000\Explorer.exe,0 '这样的结果,应该去掉最后的“,0”再传入GetIconFromFile。—————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    —————————————————————————————————