dateien löschen

thecooper

Mitglied
bekanntlich kan man dateien ja mit der kill anweisung löschen. nun möcht ich aber die datei nicht unwiederruflich löschen. kann man kill so beeinflussen das er die nur im papierkorb ablegt? oder gibt es dafür einen eigenen befehl? schon mal danke im vorraus.
 
die anderen beiden sachen haben wunderbar funktioniert. aber jetzt tun sich bei mir dafür doppelt soviele probleme auf. ich habe mir das bsp-programm "den shell-dialog zu löschen nutzen" runterladen und habe versucht ihn zu studieren. ich finde das ganze ding hat viel kram (mit/ohne dialog löschen, mit /ohne sound löschen) das interessiert mich alles garnicht. mich interessiert im prinziep nur eins. dateien in den papierkorb verschieben ohne das vorher abgefragt wird "sind sie sicher..?". etwas anderes das ich für unnötig halt ist "dateien generieren". deswegen verknüpfe ich die filelistbox mit der dirlistbox sodass immer die dateien im ausgewähltem ordner angezeigt werden. zum test habe ich erstmal eine datei("c:\01\test.txt") erstellt. aber nix klappt. ich blicke das ding nicht durch. könntest du mir vielleicht langsam, so wie für dumme, das nötigste erklären damit ich in einer filelistbox eine datei auswählen kann und diese dann per knopfdruck ohne rückfrage von windows in den papierkorb verschieben kann?
 
Soo....

Hm, der Code ist wirklich nicht das Gelbe vom Ei... Aber schauen wir mal durch (es ist ja nur ein Beispielprojekt).

Hier der Code vom "Dateien löschen"-Button:
Code:
Private Sub Command2_Click()
  Dim Files$
  Dim SFO As SHFILEOPSTRUCT
    
    MousePointer = vbHourglass
    
    Command1.Enabled = False
    Command2.Enabled = False
    DoEvents
    
1)    Files = Files & App.Path & "\Test\*.*" & Chr$(0)
2)    Files = Files & Chr$(0)
    
3)    With SFO
      .Hwnd = Me.Hwnd
      .wFunc = FO_DELETE
      .pFrom = Files
      .pTo = "" & Chr$(0)
      
4)      'keine Unterverzeichnisse
      If Check1.Value = vbUnchecked Then .fFlags = FOF_FILESONLY
      
5)      'Fortschritt anzeigen
      If Check2.Value = vbChecked Then _
                        .fFlags = .fFlags Or FOF_SIMPLEPROGRESS
      
6)      'Dialog anzeigen
      If Check3.Value = vbChecked Then _
                        .fFlags = .fFlags Or FOF_NOCONFIRMATION
      
7)      'Nur Bestätigungsdialog zum Löschen
      If Check4.Value = vbChecked Then _
                        .fFlags = .fFlags Or FOF_SILENT
      
8)      'In den Papierkorb statt löschen
      If Check5.Value = vbChecked Then _
                        .fFlags = .fFlags Or FOF_ALLOWUNDO
    End With

9)    Call SHFileOperation(SFO)
    File1.Refresh
    If Check1.Value = vbChecked Then
      Dir1.Path = App.Path & "\Test"
      Dir1.Refresh
    End If
    
    If SFO.fAnyOperationsAborted Then
      Call MsgBox("Enige Operationen wurden nicht ausgeführt!")
    End If
    
    MousePointer = vbDefault
    Command1.Enabled = True
End Sub

Die Nummern hab ich einfach mal darein gesetzt, um das leichter erklären zu können.

1) "Files" wird mit allen Dateien aus dem App.Path\Test\Verzeichnis initialisiert. Chr$(0) ist Trennzeichen und Endezeichen der File-Liste

2) Nochmal ein Chr$(0) ans Ende angehängt

3)SFO ist als SHFILEOPSTRUCT definiert (irgendso ein Windows-Kram) und bekommt so ein paar Dinge gesetzt: Hwnd ist glaub ich das Fenster, dann soll er löschen von der File-Liste (Files) (nach Null? kA, was das pTo ist, aber den Teil würde ich als Standard übernehmen)
4).fFlags = FOF_FILESONLY: nur Dateien ohne Verzeichnisse löschen

5).fFlags = .fFlags Or FOF_SIMPLEPROGRESS: Nur den Fortschritt anzeigen (aber ich glaub, das funzt net so ganz). "Or" deswegen, weil ja mehrere Flags gesetzt sein können

6) .fFlags = .fFlags Or FOF_NOCONFIRMATION: Wenn dieses Flag gesetzt ist, wird ohne Nachfragen gelöscht (das wolltest Du doch?)

7).fFlags = .fFlags Or FOF_SILENT: Nur BestätigungsDialog (wofür auch immer man diese Option braucht)

8) .fFlags = .fFlags Or FOF_ALLOWUNDO: Und das zweite, was Du wolltest: Files in den Papierkorb anstatt zu löschen

9) Anweisung, den Löschvorgang auszuführen

So, das müssten die wichtigsten Punkte gewesen sein... Hoffentlich ist es jetzt klarer geworden.
 
danke! ich habs verstanden. im prinzip total logisch aber ich hab mich von den vielen tollen begriffen verwirren lassen. eine frage hab ich noch. wie lange beschäftigst du dich schon vb.
 

Neue Beiträge

Zurück