SHGetFileInfo的奇怪问题,取*.msc文件的图标,内存会一直加,求解?

yingshang 2011-02-10 02:14:35


procedure TForm1.Button5Click(Sender: TObject);
var
SHFI : TSHFileInfo;
a : TIcon;
begin
a := TIcon.Create;
SHGetFileInfo(PChar('C:\'), 0, SHFI, SizeOf(SHFI),SHGFI_ICON or SHGFI_SMALLICON);
a.Handle := SHFI.hIcon;
Self.Canvas.Draw(400,200,a);
a.Free;
end;

如上,取"C:\"的图标没有任何问题,我一直点按钮,就第一次加了2、30k的内存,后面都没有再占用内存


如果取"*.msc"的图标,如:
system32下面的"secpol.msc"文件的图标,获取图标都正常,但是如果一直点按钮,内存会不停的加,和上面完全不一样。


求解……………………(只有这么多分了:()

...全文
133 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yingshang 2011-02-10
  • 打赏
  • 举报
回复

晕了,用win7试了一下,没有这个问题

不过,有个现象很奇怪,第一次使用SHGetFileInfo的时候,总是会加1m多内存,不知道为什么,D7,D2011在Winxp win7都是这样,Win7占用的内存还更加多一点,不知道该去怎么释放
Forever_Young 2011-02-10
  • 打赏
  • 举报
回复
和系统没关系吧,我D2010装在WIN7下,D7装在XP下,也没发现有这种情况出现
yingshang 2011-02-10
  • 打赏
  • 举报
回复
我用的D2011,这个应该和编译器没什么关系吧,毕竟是API,难道是我系统的问题?
Forever_Young 2011-02-10
  • 打赏
  • 举报
回复
把你的代码在D2010和D7下试了,没有出现你说的情况。
yingshang 2011-02-10
  • 打赏
  • 举报
回复
没有人知道吗?

1,184

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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