仔细看看吧:
调试通过的。
unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ImgList, ComCtrls,shellapi, ExtCtrls;type
  TForm1 = class(TForm)
    ListView1: TListView;
    ImageList1: TImageList;
    Button1: TButton;
    OpenDialog1: TOpenDialog;
    Image1: TImage;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
var
 i:integer;
 info:_shfileinfoa;
 item:tlistitem;
begin
if OpenDialog1.Execute then
begin
  for i:=0 to OpenDialog1.Files.Count-1 do
  begin
    SHGetFileInfo(pchar(OpenDialog1.Files.Strings[i]),0,info,sizeof(info),SHGFI_ICON+SHGFI_LARGEICON);
    image1.Picture.Icon.Handle:=info.hIcon;
    imagelist1.AddIcon(image1.Picture.Icon);
    item:=listview1.Items.Add;
    item.ImageIndex:=i;
    item.Caption:=extractfilename(OpenDialog1.Files.Strings[i]);
  end;
end;
end;end.