怎么得到ShellListView中的显示的图标?例如ShellListView当前显示的是桌面上的所有文件,那么我想通过它来得到桌面上的所有图标,但怎么从Sh

  • 主题发起人 主题发起人 jrycl
  • 开始时间 开始时间
J

jrycl

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么得到ShellListView中的显示的图标?例如ShellListView当前显示的是桌面上的所有文件,那么我想通过它来得到桌面上的所有图标,但怎么从ShellListView中得到它们呢?(100分)<br />怎么得到ShellListView中的显示的图标?例如ShellListView当前显示的是桌面上的所有文件,那么我想通过它来得到桌面上的所有图标,但怎么从ShellListView中得到它们呢?
 
var
...
AFileInfo: TSHFileInfo;

procedure FormCreate(Sender: TObject);
begin
//在smallimages 中获取系统关联图标
SmallImages := TImageList.CreateSize(16,16);
SmallImages.ShareImages := True;
SmallImages.Handle :=
ShGetFileInfo('', FILE_ATTRIBUTE_NORMAL or FILE_ATTRIBUTE_DIRECTORY,
AFileInfo, SizeOf(AFileInfo),
SHGFI_SMALLICON or SHGFI_OPENICON or SHGFI_SYSICONINDEX);
end;

function GetIcon(AFileName: string; var AIconIndex: Integer;
var ATypeName: string; ISFolder: Boolean): Boolean;
const
Flags = SHGFI_SYSICONINDEX or SHGFI_USEFILEATTRIBUTES or SHGFI_TYPENAME;
var
Attrs: DWORD;
begin
Result := True;
if ISFolder then
Attrs := FILE_ATTRIBUTE_DIRECTORY
else
Attrs := FILE_ATTRIBUTE_NORMAL;
try
SHGetFileInfo(PChar(AFileName), Attrs, AFileInfo, SizeOf(AFileInfo), Flags);
AIconIndex := AFileInfo.iIcon;
ATypeName := AFileInfo.szTypeName;
except
Result := False;
end;
end;

use it
if GetIcon(&lt;filename or dirpath&gt;, AIndex, AType, False) then
begin
Item.ImageIndex := AIndex;
end;
 
我主要目的是取得桌面上的所有图标,包括&quot;我的电脑&quot;一类的...楼上回答好象..
 
1.枚举桌面所有文件,这个技术很简单吧
2.针对每个文件,调用楼上说的:GetIcon函数
 
关键是我的电脑一类的图标..不好搞
 

Similar threads

回复
0
查看
877
不得闲
回复
0
查看
819
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部