プログラミングのメモ帳(C/C++/HSP)

日々のプログラミングで気づいた点や小技集を紹介します。(Windows 10/XP/Vista、VC2017、HSP)

ごみ箱情報の取得

2007年12月03日 11時05分00秒 | システム関連

Windows のごみ箱情報をプログラムから取得するには SHQueryRecycleBin 関数を使います。(戻る)

64 ビット整数の扱い

  • DWORDLONG 型は 64 ビット整数で、環境によっては __int64型、unsigned long long 型が利用できます。
  • また、コンパイラが VC++2003.NET の場合は 64 ビット整数の書式制御文字列は『%I64u』となります。
  • なお、コンパイラが C99 に対応してるなら『%llu』で 64 ビット整数を表示できます。

プロトタイプ宣言

HRESULT SHQueryRecycleBin(
    LPCTSTR             lpRootPath,         // ドライブのパス名
    LPSHQUERYRBINFO     lpSHQueryRBInfo     // ごみ箱情報の構造体へのポインタ
);

構造体

typedef struct _SHQUERYRBINFO {
    DWORD       cbSize;         // 構造体のサイズ
    DWORDLONG   i64Size;        // オブジェクトの合計サイズ
    DWORDLONG   i64NumItems;    // オブジェクトの総数
} SHQUERYRBINFO, *LPSHQUERYRBINFO;

サンプル

#include <stdio.h>
#include <windows.h>
#include <shellapi.h>   // shell32.lib

// メイン関数
int main( void )
{
    SHQUERYRBINFO   rbInfo = { sizeof(SHQUERYRBINFO) };
    DWORDLONG       i64MB;
    DWORDLONG       i64Major;
    DWORDLONG       i64Minor;
    
    // ごみ箱の情報を取得する
    if ( SHQueryRecycleBin(NULL,&rbInfo) == S_OK ){
        i64MB       = (rbInfo.i64Size * 100 / 1024 / 1024);
        i64Major    = (i64MB / 100);
        i64Minor    = (i64MB % 100);
        printf( TEXT("ごみ箱の合計サイズ:%I64uバイト(%I64u.%02I64uMB)\n"), rbInfo.i64Size, i64Major, i64Minor );
        printf( TEXT("ごみ箱のファイル数:%I64u個\n"), rbInfo.i64NumItems );
    }
    else{
        printf( TEXT("ごみ箱の情報を取得できません。\n") );
    }
    return 0;
}
  • shellapi.h ヘッダをインクルードして下さい。
  • shell32.lib ライブラリをインポートして下さい。

補足情報

  • 全てのドライブのごみ箱を空にするには、第1引数に NULL を指定します。
  • 指定のドライブのごみ箱を空にするには、第1引数に "C:\\" の文字列を指定します。

関連記事



コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« ごみ箱のクリア | トップ | 趣味でBASIC言語を作ってみる(1) »
最新の画像もっと見る

コメントを投稿

システム関連」カテゴリの最新記事