unit ExtrIcon;

interface
uses ShellAPI, Graphics, WinTypes, SysUtils;

function ExtractIconFromFile(FileName: string; Index: integer): HIcon;

implementation

function ExtractIconFromFile(FileName: string; Index: integer): HIcon;
var
  Buff: array [0..255] of char;
  iNumberOfIcons: integer;
begin
  { If we have a valid file. }
  if FileExists(FileName) then
     begin
     { Find out how many icons are in the file }
     iNumberOfIcons := ExtractIcon(hInstance, StrPCopy(Buff, FileName), Cardinal(-1));
     if (Index > 0) and (Index < iNumberOfIcons) and (iNumberOfIcons > 0) then
     Result:= ExtractIcon(hInstance, Buff, Index);
     end;

end;

end.
