Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0417: Anzahl der Dateien und deren Größe im Papierkorb auslesen

 von 

Beschreibung 

Ermöglicht zum einen die Anzahl der im Papierkorb befindlichen Datein, als auch deren Gesamtgröße zu erfahren. Nützlich z.B. um nach einer Löschaktion herauszufinden ob eine Datei dort auch tatsächlich angelangt ist.

Schwierigkeitsgrad:

Schwierigkeitsgrad 2

Verwendete API-Aufrufe:

SHQueryRecycleBinA (SHQueryRecycleBin)

Download:

Download des Beispielprojektes [2,56 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Project1.vbp -------------
'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Festplattenauswahlliste "Drive1"
' Steuerelement: Schaltfläche "Command1"
' Steuerelement: Beschriftungsfeld "Label2"
' Steuerelement: Beschriftungsfeld "Label1"
' Steuerelement: Beschriftungsfeld "Label4"
' Steuerelement: Beschriftungsfeld "Label3"

Option Explicit

Private Declare Function SHQueryRecycleBin Lib "shell32.dll" _
        Alias "SHQueryRecycleBinA" (ByVal pszRootPath As String, _
        pSHQueryRBInfo As SHQUERYRBINFO) As Long

Private Type ULARGE_INTEGER
    Lo As Long
    Hi As Long
End Type

Private Type SHQUERYRBINFO
    cbSize As Long
    i64Size As ULARGE_INTEGER
    i64NumItems As ULARGE_INTEGER
End Type

Private Sub Form_Load()
    Call GetBinsData("")
End Sub

Private Sub Command1_Click()
    Call GetBinsData("")
End Sub

Private Sub Drive1_Change()
    Call GetBinsData(Left$(Drive1.Drive, 2) & "\")
End Sub

Private Sub GetBinsData(rbPath As String)
    Dim RB As SHQUERYRBINFO
    
    RB.cbSize = Len(RB)
    Call SHQueryRecycleBin(rbPath, RB)
    
    'Genau genommen müsste an dieser Stelle eine genauere Be-
    'trachtung von Lo & Hi erfolgen, da es sich hier ja um
    'einen einen 64 Bit-Wert handelt der in VB nicht direkt
    'dargestellt werden kann.
    Label1.Caption = RB.i64NumItems.Lo
    Label2.Caption = Format$(RB.i64Size.Lo \ 1024&, "###,###,### kB")
End Sub

'Für Windows NT & 2k:
'Private Sub GetBinsData(rbPath As String)
'  Dim i As Integer
'  Dim RB As SHQUERYRBINFO
'  Dim size As Long
'  Dim files As Long
'
'  RB.cbSize = Len(RB)
'
'  If Len(rbPath) = 0 Then
'    For i = Asc("A") To Asc("Z")
'      Call SHQueryRecycleBin(Chr(i) & ":", RB)
'      size = size + RB.i64Size.Lo \ 1024
'      files = files + RB.i64NumItems.Lo
'    Next i
'    Label1.Caption = files
'    Label2.Caption = Format$(size \ _
'                             1024&, "###,###,### kB")
'  Else
'    Call SHQueryRecycleBin(rbPath, RB)
'
'    Label1.Caption = RB.i64NumItems.Lo
'    Label2.Caption = Format$(RB.i64Size.Lo \ _
'                             1024&, "###,###,### kB")
'  End If
'
'End Sub
'---------- Ende Formular "Form1" alias Form1.frm  ----------
'-------------- Ende Projektdatei Project1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.