ゴミ箱のサイズとアイテム数の取得          <TOP>


ゴミ箱のサイズとアイテム数を取得します。

SHQueryRecycleBin ゴミ箱のサイズとアイテム数を取得

SHEmptyRecycleBin 指定のドライブのごみ箱を空にする

 

このテストでは、Cドライブを指定しています。

 

SHEmptyRecycleBin関数を実行すると下記確認メッセージが表示されます。

 

'================================================================
'= ゴミ箱のサイズとアイテム数の取得
'=    (SHQueryRecycleBin.bas)
'================================================================
#include "Windows.bi"

Type SHQUERYRBINFO
    cbSize As Long                     '構造体のバイト数
    i64SizeLow As Long                 'ごみ箱にある全アイテム数の下位32ビット値
    i64SizeHigh As Long                '同、上位32ビット値
    i64NumItemsLow As Long             'ごみ箱にあるアイテム数の下位32ビット値
    i64NumItemsHigh As Long            '同、上位32ビット値
End Type

' ごみ箱のサイズとアイテム数
Declare Function Api_SHQueryRecycleBin& Lib "Shell32" Alias "SHQueryRecycleBinA" (ByVal pszRootPath$, pSHQueryRBInfo As SHQUERYRBINFO)

' 指定のドライブのごみ箱を空にする
Declare Function Api_SHEmptyRecycleBin& Lib "Shell32" Alias "SHEmptyRecycleBinA" (ByVal hWnd&, ByVal pszRootPath$, ByVal dwFlags&)

' dwFlagsの定数
#define SHERB_NOCONFIRMATION &H1       '削除の確認をしない
#define SHERB_NOPROGRESSUI &H2         '進行状況を表示しない
#define SHERB_NOSOUND &H4              '処理完了時にサウンド無し

Var Shared List1 As Object
Var Shared Button2 As Object
List1.Attach GetDlgItem("List1")
Button2.Attach GetDlgItem("Button2")

'================================================================
'=
'================================================================
Declare Sub Mainform_Start edecl ()
Sub Mainform_Start()
    Button2.EnableWindow 0
End Sub

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var pSHQueryRBInfo As SHQUERYRBINFO
    Var psize$ As String
    Var pitem$ As String
    Var Ret As Long

    pSHQueryRBInfo.cbSize = Len(pSHQueryRBInfo)

    '関数の実行
    Ret = Api_SHQueryRecycleBin("C:\", pSHQueryRBInfo)

    '結果表示
    psize$ = Str$(pSHQueryRBInfo.i64SizeLow)
    psize$ = Str$(pSHQueryRBInfo.i64SizeHigh) + Mid$(psize$, 2)

    pitem$ = Str$(pSHQueryRBInfo.i64NumItemsLow)
    pitem$ = Str$(pSHQueryRBInfo.i64NumItemsHigh) + Mid$(pitem$, 2)

    List1.ResetContent
    List1.AddString "サイズ(Cドライブ)"

    List1.AddString space$(4) + Format$(Int(Val(psize$) / (10 ^ 6)), "###,###,###,### MB")
    List1.AddString space$(4) + Format$(Int(Val(psize$))           , "###,###,###,### B")

    List1.AddString "アイテム数"
    List1.AddString space$(4) + Format$(Val(pitem$)                , "        ###,### 個")

    If val(pitem$) > 0 Then
        Button2.EnableWindow -1
    Else
        Button2.EnableWindow 0
    End If
End Sub

'================================================================
'=
'================================================================
Declare Sub Button2_on edecl ()
Sub Button2_on()
    Var Ret As Long

    Ret = Api_SHEmptyRecycleBin(GethWnd, "C:\", 0)
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End