2010/5/14 (金) 16:57:54 Mr.XRAY |
EXE,DLL等は複数のアイコンを持っていますが,
一般のファイルということでしたら,以下のような関数があります.
//-----------------------------------------------------------------------------
// 指定ファイルのアイコンを表示
// usesにShellAPIが必要
//-----------------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
var
lpiIcon : WORD;
hico : HIcon;
FilePath : String;
begin
//自分のアイコンを表示
FilePath := ExtractFilePath(ParamStr(0)) + 'Project1.exe';
lpiIcon :=0;
//アイコンのハンドルを取得
hIco := ExtractAssociatedIcon(hInstance, PChar(FilePath), lpiIcon);
if hico <> 0 then begin
DrawIcon(Canvas.Handle, 0, 0, hico);
end;
DestroyIcon(hico);
end;
//-----------------------------------------------------------------------------
// 指定ファイルのアイコンを表示
// usesにShellAPIが必要
//-----------------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
var
FileInfo : SHFILEINFO;
AIcon : TIcon;
FilePath : String;
begin
//自分のアイコンを表示
FilePath := ExtractFilePath(ParamStr(0)) + 'Project1.exe';
//ファイルに関連づいたアイコンの取得
AIcon := TIcon.Create;
try
SHGetFileInfo(PChar(FilePath),
FILE_ATTRIBUTE_DIRECTORY,
FileInfo,
SizeOf(FileInfo),
SHGFI_ICON);
AIcon.Handle:=FileInfo.hIcon;
Image1.Picture.Assign(AIcon);
finally
FreeAndNil(AIcon);
end;
end;
//-----------------------------------------------------------------------------
// 指定ファイルのアイコンを表示 小さいアイコン
// usesにShellAPIが必要
//-----------------------------------------------------------------------------
procedure TForm1.Button2Click(Sender: TObject);
var
FileInfo : SHFILEINFO;
AIcon : TIcon;
FilePath : String;
begin
//自分のアイコンを表示
FilePath := ExtractFilePath(ParamStr(0)) + 'Project1.exe';
//ファイルに関連づいたアイコンの取得
AIcon := TIcon.Create;
try
SHGetFileInfo(PChar(FilePath),
FILE_ATTRIBUTE_DIRECTORY,
FileInfo,
SizeOf(FileInfo),
SHGFI_SMALLICON or SHGFI_ICON or SHGFI_SYSICONINDEX);
AIcon.Handle:=FileInfo.hIcon;
Image2.Picture.Assign(AIcon);
finally
FreeAndNil(AIcon);
end;
end;
私がよく使用しているのは,後者のSHGetFileInfoです.
ListViewなどにファイルの一覧を表示する場合は,システムのイメージリストを使って
http://mrxray.on.coocan.jp/Delphi/plSamples/790_ListView.htm#05
のような感じのコードを書いています.
|
|