如何获取windows文件的系统图标?

Lilyhappy 2003-03-21 10:52:38
如果要获取一个windows文件(比如txt文件)的系统图标,并把它显示在ListView中,应该如何写代码?
...全文
143 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
myy 2003-03-22
  • 打赏
  • 举报
回复
我倒,分太多没处花? :)

我写的,你试过吗??
「已注销」 2003-03-22
  • 打赏
  • 举报
回复
其他扩展名的文件获得图标的方法类推
猎人66 2003-03-22
  • 打赏
  • 举报
回复
SHFILEINFO shIcon;
HICON hIcon;
ZeroMemory(&shIcon,sizeof(shIcon));
SHGetFileInfo("c:\\autoexec.bat",FILE_ATTRIBUTE_NORMAL,&shIcon,sizeof(shIcon),SHGFI_USEFILEATTRIBUTES|SHGFI_SMALLICON|SHGFI_ICON);
hIcon=shIcon.hIcon;
Image1->Picture->Icon->Handle=hIcon;
「已注销」 2003-03-22
  • 打赏
  • 举报
回复
注册表里有 在HKEY_CLASSES_ROOT下
如果是*.txt文件,则先找到注册键 HKEY_CLASSES_ROOT\.txt 其(默认)值为 txtfile
然后找 HKEY_CLASSES_ROOT\txtfile\DefaultIcon\(默认)
看看吧,然后用ExtractFileIcon获得图标
就这么简单
猎人66 2003-03-22
  • 打赏
  • 举报
回复
呵,等一会,有分也是要赚的
Lilyhappy 2003-03-22
  • 打赏
  • 举报
回复
因为我以为这里的帖子是不会被删掉的。(以前从来没被删过)
Thank you!
myy 2003-03-22
  • 打赏
  • 举报
回复
ZeroMemory( &vSHFileInfo, sizeOf(vSHFileInfo));
^^ //两处都加上
myy 2003-03-22
  • 打赏
  • 举报
回复
>>你好!
>>很抱歉!你昨天写给我的关于“如何获取windows文件的系统图标?”的回复不知被谁删掉了。
>>我编程急着用这段代码。麻烦你再写一次,好吗?

那你昨天干嘛不留下呢?? :(

bool __fastcall GetSystemImageList(TImageList *mImageList)
// 返回系统图标到图形列表中是否成功
{
bool Ret;
THandle vHandle ;
TSHFileInfo vSHFileInfo;
ZeroMemory(vSHFileInfo, sizeOf(vSHFileInfo));
vHandle = SHGetFileInfo("", 0, vSHFileInfo, sizeOf(vSHFileInfo),
SHGFI_SYSICONINDEX | SHGFI_SMALLICON);
Ret = (vHandle != 0);
mImageList->Handle = vHandle;
mImageList->ShareImages = true;
}
int __fastcall GetIconIndex(AnsiString mPath)
// 返回文件或路径所对应的图标序号
{
TSHFileInfo vSHFileInfo;
ZeroMemory(vSHFileInfo, sizeOf(vSHFileInfo));
SHGetFileInfo(mPath.c_str(), 0, vSHFileInfo, sizeOf(vSHFileInfo),
SHGFI_SYSICONINDEX);
return vSHFileInfo.iIcon;
}
Lilyhappy 2003-03-22
  • 打赏
  • 举报
回复
但事先不知道扩展名的!是用TOpenDialog打开文件时才知道扩展名

13,874

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧