SHQueryRecycleBinを利用するとゴミ箱に入っているファイルやフォルダの合計数とそれらの合計容量(単位:bytes)を取得できる。
注意すべき点は取得できた値は64ビット値のため、printfなどで数値から文字列に変更するときには「%I64d」のように64ビット処理する必要があることだ。
#include "atlstr.h" #include "shellapi.h" bool Test(void) { HRESULT hr; SHQUERYRBINFO sShQueryRbInfo; ::ZeroMemory(&sShQueryRbInfo,sizeof(SHQUERYRBINFO)); sShQueryRbInfo.cbSize = sizeof(SHQUERYRBINFO); hr = ::SHQueryRecycleBin(NULL,&sShQueryRbInfo); if(FAILED(hr)) return false; CAtlString strMessage; strMessage.Format(_T("アイテム数:%I64d\n容量:%I64d MB\n"),sShQueryRbInfo.i64NumItems,sShQueryRbInfo.i64Size / (1024*1024)); ::MessageBox(NULL,strMessage,_T("ゴミ箱の中身"),MB_OK); return true; }