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"文件的图标,获取图标都正常,但是如果一直点按钮,内存会不停的加,和上面完全不一样。
求解……………………(只有这么多分了:()
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"文件的图标,获取图标都正常,但是如果一直点按钮,内存会不停的加,和上面完全不一样。
求解……………………(只有这么多分了:()
晕了,用win7试了一下,没有这个问题不过,有个现象很奇怪,第一次使用SHGetFileInfo的时候,总是会加1m多内存,不知道为什么,D7,D2011在Winxp win7都是这样,Win7占用的内存还更加多一点,不知道该去怎么释放