vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück
Rubrik: System/Windows   |   VB-Versionen: VB202207.07.25
Ermitteln von aktueller Objektanzahl und deren Gesamtgröße im Papierkorb

Diese spezielle Programmierung kann von praktischem Nutzen sein.

Autor:   Dietrich HerrmannBewertung:     [ Jetzt bewerten ]Views:  386 
ohne HomepageSystem:  Win7, Win8, Win10, Win11kein Beispielprojekt 

Der Tipp zeigt, wie man mit wenig Programm die angegebene Aufgabe lösen kann.

Zunächst die Hintergrund-Programmierung:

Imports System.Runtime.InteropServices
 
Module dhmodPapierkorb
 
  <StructLayout(LayoutKind.Sequential, Pack:=1)>
  Public Structure SHQUERYRBINFO
    Dim cbSize As Int64
    Dim i64Size As Long
    Dim i64NumItems As Long
  End Structure
  <DllImport("shell32.dll")>
  Public Function SHQueryRecycleBin(pszRootPath As String,
    ByRef ptSHQueryRBInfo As SHQUERYRBINFO) As Int64
  End Function
 
End Module

Hier die Anwendungsprogrammierung:

' Anzahl und Größe Dateien im Windows Papierkorb
' ermitteln, AnyCPU
Dim info As SHQUERYRBINFO
With info
  .cbSize = Len(info)
  SHQueryRecycleBin(Nothing, info)
  lblAnzD.Text = .i64NumItems.ToString
  lblSizeD.Text = FormatBytesSys(.i64Size)
End With

Und als Zugabe eine Hilfsfunktion:

' file's size, art via suffix (in B, KB, MB, GB)
Public Function FormatBytesSys(BytesCaller As ULong,
  Optional suffixArt As String = "k") As String
 
  'art... k (Kurzbezeichnung der Größe)
  'art... nicht k (Langbezeichnung)
  Dim DoubleBytes As Double
  Try
    Select Case BytesCaller
      Case Is >= 1099511627776
        DoubleBytes = CDbl(BytesCaller / 1099511627776) 'TB
        Return FormatNumber(DoubleBytes, 2) & If(suffixArt = "k", " TB", " Terabyte")
      Case 1073741824 To 1099511627775
        DoubleBytes = CDbl(BytesCaller / 1073741824) 'GB
        Return FormatNumber(DoubleBytes, 2) & If(suffixArt = "k", " GB", " Gigabyte")
      Case 1048576 To 1073741823
        DoubleBytes = CDbl(BytesCaller / 1048576) 'MB
        Return FormatNumber(DoubleBytes, 2) & If(suffixArt = "k", " MB", " Megabyte")
      Case 1024 To 1048575
        DoubleBytes = CDbl(BytesCaller / 1024) 'KB
        Return FormatNumber(DoubleBytes, 2) & If(suffixArt = "k", " KB", " Kilobyte")
      Case 0 To 1023
        DoubleBytes = BytesCaller ' Bytes
        Return FormatNumber(DoubleBytes, 2) & " Bytes"
      Case Else
        Return ""
    End Select
  Catch
    Return ""
  End Try
End Function

Dieser Tipp wurde bereits 386 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel