怎样在ListView组件中,读出所以Exe文件的图标,并显示出来!(100分)

  • 主题发起人 主题发起人 duducat
  • 开始时间 开始时间
D

duducat

Unregistered / Unconfirmed
GUEST, unregistred user!
就比如win系统浏览器的详细资料样显示的一样
 
ExtractIcon 或 ExtractIconEx 都满足你的要求
 
to OpuBF
能具体一点嘛?高手!!我不知道ExtractIcon详细使用方法!!
 
高手不敢当,给你个简单例子

窗体文件
-----------------------------------------
object Form1: TForm1
; Left = 198
; Top = 107
; Width = 496
; Height = 321
; Caption = 'Form1'
; Color = clBtnFace
; Font.Charset = DEFAULT_CHARSET
; Font.Color = clWindowText
; Font.Height = -11
; Font.Name = 'MS Sans Serif'
; Font.Style = []
; OldCreateOrder = False
; PixelsPerInch = 96
; TextHeight = 13
; object ListView: TListView
; ; Left = 8
; ; Top = 8
; ; Width = 473
; ; Height = 249
; ; Columns = <>
; ; LargeImages = ImageListLarge
; ; SmallImages = ImageListSmall
; ; TabOrder = 0
; end
; object Button1: TButton
; ; Left = 408
; ; Top = 264
; ; Width = 75
; ; Height = 25
; ; Caption = 'Open'
; ; TabOrder = 1
; ; OnClick = Button1Click
; end
; object Button2: TButton
; ; Left = 8
; ; Top = 264
; ; Width = 75
; ; Height = 25
; ; Caption = 'Large Icon'
; ; TabOrder = 2
; ; OnClick = Button2Click
; end
; object Button3: TButton
; ; Left = 88
; ; Top = 264
; ; Width = 75
; ; Height = 25
; ; Caption = 'Small Icon'
; ; TabOrder = 3
; ; OnClick = Button3Click
; end
; object ImageListLarge: TImageList
; ; Height = 32
; ; Width = 32
; ; Left = 96
; ; Top = 80
; end
; object OpenDialog: TOpenDialog
; ; Filter = '可执行文件(*.exe)|*.exe|动态链接库(*.dll)|*.dll|所有文件(*.*)|*.*'
; ; Left = 160
; ; Top = 80
; end
; object ImageListSmall: TImageList
; ; Left = 96
; ; Top = 120
; end
end

程序
-----------------------------------
unit Unit1;

interface

uses
; Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
; Dialogs, StdCtrls, ImgList, ComCtrls, ShellAPI;

type
; TForm1 = class(TForm)
; ; ListView: TListView;
; ; ImageListLarge: TImageList;
; ; OpenDialog: TOpenDialog;
; ; Button1: TButton;
; ; Button2: TButton;
; ; Button3: TButton;
; ; ImageListSmall: TImageList;
; ; procedure Button2Click(Sender: TObject);
; ; procedure Button3Click(Sender: TObject);
; ; procedure Button1Click(Sender: TObject);
; private
; ; { Private declarations }
; public
; ; { Public declarations }
; end;

var
; Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
begin
; ListView.ViewStyle := vsIcon;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
; ListView.ViewStyle := vsSmallIcon;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
; ix, count: Integer;
; shIcon, lhIcon: HIcon;

; procedure ListViewAddIcon( IconHandle: HIcon );
; var
; ; aIcon: TIcon;
; begin
; ; // 将图标加入ListView
; ; if IconHandle <> 0 then
; ; ; try
; ; ; ; aIcon := TIcon.Create;
; ; ; ; aIcon.Handle := IconHandle;

; ; ; ; Form1.Caption := IntToStr( IconHandle );

; ; ; ; with ListView.Items.Add do
; ; ; ; begin
; ; ; ; ; ImageIndex := ImageListLarge.Count;
; ; ; ; ; Caption := '图标' + IntToStr( ImageListLarge.Count );

; ; ; ; ; ImageListLarge.InsertIcon( ImageIndex, aIcon );
; ; ; ; ; ImageListSmall.InsertIcon( ImageIndex, aIcon );
; ; ; ; end;

; ; ; finally
; ; ; ; FreeAndNIL( aIcon );
; ; ; end;
; end;
begin
; if OpenDialog.Execute then
; begin
; ; // 获取窗体图标个数
; ; shIcon := 0; lhIcon := 0;
; ; count := ExtractIconEx( PChar( OpenDialog.FileName ), -1, lhIcon, shIcon, 0 );

; ; for ix:=0 to count-1 do
; ; begin
; ; ; ExtractIconEx( PChar( OpenDialog.FileName ), ix, lhIcon, shIcon, 1 );
; ; ; ListViewAddIcon( lhIcon );
; ; ; ListViewAddIcon( shIcon );
; ; end;
; end;
end;

end.
 
十分感谢!!!我调试通过啦!在详细资料模式时,调用shIcon效果最好啦!!
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
866
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部