一个很急的关于提取图标的问题。

yeah 2000-06-04 03:14:00
在一个数据库MEMO字段中,用Loadfromfile方法装载一个Windows可执行程序,如Notepad.exe,(假定该程序被保存到数据库中后,删除原文件)现在想在一个ListView中显示Notepad.exe的图标,使用何种方法可以不将MEMO字段中的数据保存到硬盘的情况下,提取到该字段中的图标数据?
...全文
223 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jll 2000-06-05
  • 打赏
  • 举报
回复
我到是会从EXE、DLL文件中提取图标,有兴趣的话可以看看:
http://bluebird22.easthome.net
我还编写了一个提取图标的程序,不过只能抓出256色(高色的图标会失真)的图标...
在http://bluebird22.easthome.net里也有哦!
cdxc 2000-06-05
  • 打赏
  • 举报
回复
提取图标在DELPHI中有一个很好的例程啊,为什么不看看,舍近求远呢?:)
pcly 2000-06-05
  • 打赏
  • 举报
回复
我想:比尔盖子的API与你 还不至于想到一块儿了把
wxj_ipcv 2000-06-04
  • 打赏
  • 举报
回复
用下述代码就可以了:
HICON hIcon=::ExtractIcon(AfxGetInstanceHandle(),_T("notepad.exe",0);



kxy 2000-06-04
  • 打赏
  • 举报
回复
我不会,(如果知道exe的格式应该可以的.)
或者有API,我不知道.
yeah 2000-06-04
  • 打赏
  • 举报
回复
感谢kxy的回答,如果实在不行,也只有这个办法了。
能不能在不增加专门保存图标的字段的情况下,只从数据库中保存的EXE文件数据中提取图标呢?
kxy 2000-06-04
  • 打赏
  • 举报
回复
我只是一个建议:
数据库中添加一个字段.Blob类型的.
LoadFromFile后,删除.exe之前.
ExeIcon : TIcon;

ExeIcon.Handle := ExtractIcon(handle,"notepad.exe",0);

然后把ExeIcon保存到数据库中.
AMem : TMemoryStream;
ExeIcon.SaveToStream(AMem);
TBlobField(ATable.FieldByName('ExeIcon')).LoadFromStream(AMem):
yeah 2000-06-04
  • 打赏
  • 举报
回复
kxy,请说明你实现的过程,谢谢。
kxy 2000-06-04
  • 打赏
  • 举报
回复
wxj_ipcv说的是从文件中读取,不符合你的要求.
_T() 是一个宏就是把一个字符串转化为Unicode的字符串.
你不如加多一个字段,一开始就把ICON保存.
yeah 2000-06-04
  • 打赏
  • 举报
回复
我没用过C,不知道_T()是什么东东,能详细点吗?

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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