Daten löschvorgang in progressbar zeigen?

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von FAtheone.

    Eben ^^
    Den Rest kannst du ja dann auslassen (Copy, Move, etc.)
    EDIT: VB.Net
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. 'UPGRADE_WARNING: Für die Struktur SHFILEOPSTRUCT müssen Marshalling-Attribute möglicherweise als ein Argument in dieser Declare-Anweisung weitergegeben werden. Klicken Sie hier für weitere Informationen: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="C429C3A5-5D47-4CD9-8F51-74A1616405DC"'
    3. Private Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (ByRef lpFileOp As SHFILEOPSTRUCT) As Integer
    4. ' KONSTANTEN DER FUNC
    5. ' Kopiert das File in pFROM nach pTo
    6. Private Const FN_COPY As Integer = &H2
    7. ' Löscht das File in pFrom (pTo wird ignoriert)
    8. Private Const FN_DELETE As Integer = &H3
    9. ' Verschiebt das File in pFROM nach pTo
    10. Private Const FN_MOVE As Integer = &H1
    11. ' Umbenennen des Files in pTo
    12. Private Const FN_RENAME As Integer = &H4
    13. ' KONSTANTEN DER FLAGS
    14. ' Undo Information -> Schiebt beim Löschen
    15. ' das (die) File(s) in den Papierkorb
    16. Private Const FNF_ALLOWUNDO As Integer = &H40
    17. ' Bislang keine bekannte Funktion
    18. Private Const FNF_CONFIRMMOUSE As Integer = &H2
    19. ' Handle zum Eltern-Fenster der
    20. ' Progress-Dialogbox (also Me.hwnd)
    21. Private Const FnF_CREATEPROGRESSDLG As Integer = &H0
    22. ' Nur Files - KEINE ORDNER - wenn *.* als Source
    23. Private Const FnF_FILESONLY As Integer = &H80
    24. ' Für diverse Stellen bei DEST (der "pTo" muss dann
    25. ' die gleiche Anzahl von Zielen aufweisen wie "pFrom"
    26. Private Const FnF_MULTIDESTFILES As Integer = &H1
    27. ' ANTWORTET AUTOMATISCH MIT 'JA für alle'
    28. Private Const FnF_NOCONFIRMATION As Integer = &H10
    29. ' Keine Abfrage für einen neuen Ordner, falls benötigt
    30. Private Const FnF_NOCONFIRMMKDIR As Integer = &H200
    31. ' Bei Namenskollisionen im ZIEL wird ein neuer Name
    32. ' erzeugt (z.B. Kopie(2) von xy.tmp)
    33. Private Const FnF_RENAMEONCOLLISION As Integer = &H8
    34. ' Zeigt keine Fortschritts-Dialogbox (fliegende Blätter)
    35. Private Const FnF_SILENT As Integer = &H4
    36. ' Zeigt die Fortschritts-Dialogbox an, aber ohne Filenamen
    37. Private Const FnF_SIMPLEPROGRESS As Integer = &H100
    38. ' Wenn FnF_RENAMECOLLISION gewählt wird,
    39. ' hNameMappings wird gefüllt (Anzahl)
    40. Private Const FnF_WANTMAPPINGHANDLE As Integer = &H20
    41. ' Eine Funktion für vier Dateioperationen
    42. Structure SHFILEOPSTRUCT
    43. Dim hWnd As Integer
    44. Dim wFunc As Integer
    45. Dim pFrom As String
    46. Dim pTo As String
    47. Dim fFlags As Short
    48. Dim fAnyOperationsAborted As Boolean
    49. Dim hNameMappings As Integer
    50. Dim lpszProgressTitle As String
    51. End Structure
    52. Public Function fDelete(ByRef Source As String, ByRef DelToTrash As Boolean, ByRef ShowDialog As Boolean) As Integer
    53. ' DelToTrash: True, wenn in Papierkorb gelöscht
    54. ' ShowDialog: True, wenn zusätzlich Löschabfrage
    55. ' erfolgen soll
    56. 'UPGRADE_ISSUE: SHFILEOPSTRUCT Objekt wurde nicht aktualisiert. Klicken Sie hier für weitere Informationen: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6B85A2A7-FE9F-4FBE-AA0C-CF11AC86A305"'
    57. Dim FileStructur As New SHFILEOPSTRUCT
    58. Dim Flags As Integer
    59. Flags = 0
    60. 'UPGRADE_WARNING: Die Standardeigenschaft des Objekts FNF_ALLOWUNDO konnte nicht aufgelöst werden. Klicken Sie hier für weitere Informationen: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"'
    61. If DelToTrash Then Flags = FNF_ALLOWUNDO
    62. If Not ShowDialog Then Flags = Flags Or FnF_NOCONFIRMATION
    63. With FileStructur
    64. 'UPGRADE_WARNING: Die Standardeigenschaft des Objekts FileStructur.wFunc konnte nicht aufgelöst werden. Klicken Sie hier für weitere Informationen: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"'
    65. 'UPGRADE_WARNING: Die Standardeigenschaft des Objekts FN_DELETE konnte nicht aufgelöst werden. Klicken Sie hier für weitere Informationen: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"'
    66. .wFunc = FN_DELETE
    67. 'UPGRADE_WARNING: Die Standardeigenschaft des Objekts FileStructur.pFrom konnte nicht aufgelöst werden. Klicken Sie hier für weitere Informationen: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"'
    68. 'UPGRADE_WARNING: Die Standardeigenschaft des Objekts Check_NullChars() konnte nicht aufgelöst werden. Klicken Sie hier für weitere Informationen: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"'
    69. .pFrom = Check_NullChars(Source)
    70. 'UPGRADE_WARNING: Die Standardeigenschaft des Objekts FileStructur.fFlags konnte nicht aufgelöst werden. Klicken Sie hier für weitere Informationen: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"'
    71. .fFlags = Flags
    72. End With
    73. 'UPGRADE_WARNING: Die Standardeigenschaft des Objekts SHFileOperation() konnte nicht aufgelöst werden. Klicken Sie hier für weitere Informationen: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"'
    74. fDelete = SHFileOperation(FileStructur)
    75. End Function
    76. ' Alle Angaben müssen mit vbNullChar+vbNullChar
    77. ' abgeschlossen werden. Hier wird's noch mal geprüft
    78. Private Function Check_NullChars(ByRef S As String) As String
    79. If Mid(S, S.Length - 2, 1) <> vbNullChar & vbNullChar Then
    80. If Mid(S, S.Length - 1, 1) <> vbNullChar Then
    81. S = S & vbNullChar & vbNullChar
    82. Else
    83. S = S & vbNullChar
    84. End If
    85. End If
    86. Check_NullChars = S
    87. End Function
    88. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    89. fDelete("C:\blabla.txt", True, True)
    90. End Sub
    91. End Class

    Hab grad gesehen, dass hier einfach die Explorer Löschmethode aufgerufen wird. Aber eigentlich sollte das doch auch gehen oder?
    sonst weiss ich auch keine Lösung, denn File.Delete() hat keine Events, die beispielsweise den Löschfortschritt anzeigen...

    Grüsse
    Pascal

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „PascalN“ ()

    Einfach eine Funktion schreiben die sich Rekursiv aufruft und alle Dateien löscht, zuerst musst du aber die Dateien ermitteln die gelöscht werden sollen, also zuerst einmal Rekursiv alle Verzeichnisse durchlaufen und Dateien zählen.
    hab da noch eine idee, weis aber nict ob des geht:

    schau wie groß die datei vor dem speichern ist.
    und während dem speichern immer schaun wie größ die datei noch ist. keine ahnung ob man des während des löschvorganges prüfen kann.

    ali
    :P Mfg Aligator :P
    ...bzw. der jeweilige FAT/NTFS-Eintrag ausgenullt. Die Bits bleiben bestehen.
    Der einzig sinnvolle Fortschritt wäre sowas:

    -Dateigröße bestimmen (War dan nicht 'ne Funktion für?)
    -Dateien Löschen und von Gesamtgröße abziehen
    -%calculate