如何解决获取回收站的内存大小和对象数
我在 Windows 10 上使用 Borland C++Builder 6 Enterprise。
我有以下代码来提取回收站的内存大小和对象计数:
...
#include "shellapi.h"
...
void __fastcall TForm6::Button10Click(TObject *Sender)
{
SHQUERYRBINFO rbinfo;
AnsiString sSize,sCount;
int rc;
unsigned __int64 i64Size,i64Cnt;
rbinfo.cbSize=sizeof(rbinfo);
rc=SHQueryRecycleBin("C:\\",&rbinfo);
if (rc!=S_OK)
Application->MessageBox( "Fehler bei SHQueryRecycleBin","Fehler",MB_OK | MB_ICONERROR);
else
{
i64Size = rbinfo.i64Size;
i64Cnt = rbinfo.i64NumItems;
sSize =AnsiString(rbinfo.i64Size);
sCount=AnsiString(rbinfo.i64NumItems);
Application->MessageBox(sSize.c_str(),"Speicherplatz",MB_OK | MB_ICONINFORMATION);
Application->MessageBox(sCount.c_str(),"Anzahl Objekte",MB_OK | MB_ICONINFORMATION);
}
}
该函数获取错误的总值。内存大小大于磁盘空间。对象计数为 43628621390151600。
我在这里做错了什么?
你好
-
我将 int 替换为 HRESULT。
-
API 函数的返回值已经错误。
rbinfo.i64Size=433791696898 sSize= 433791696898 rbinfo.i64NumItems=0 sCount =0
-
该工具 Secure Eraser 在回收中显示 206.195 个文件和 197.121,3 MB
斌。 (图片) 工具 CCleaner 在 Recycle 中显示 560 个文件(对象)和 36.441.834 KB
斌。 (CCleaner.jpg) 在 Windows 资源管理器中,回收站中也有 560 个对象。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。