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"文件的图标,获取图标都正常,但是如果一直点按钮,内存会不停的加,和上面完全不一样。
求解……………………(只有这么多分了:()

解决方案 »

  1.   

    我用的D2011,这个应该和编译器没什么关系吧,毕竟是API,难道是我系统的问题?
      

  2.   

    和系统没关系吧,我D2010装在WIN7下,D7装在XP下,也没发现有这种情况出现
      

  3.   


    晕了,用win7试了一下,没有这个问题不过,有个现象很奇怪,第一次使用SHGetFileInfo的时候,总是会加1m多内存,不知道为什么,D7,D2011在Winxp win7都是这样,Win7占用的内存还更加多一点,不知道该去怎么释放