Tempo addietro, durante lo sviluppo di una procedura lato server, mi capitò di dover gestire l’eliminazione di alcuni files, ovviamente la prima cosa che feci fu pensare di cancellare direttamente il file… Ma dopo diverso tempo il cliente mi chiese di modificare tale procedura in modo da non cancellare definitivamente i files ma di spostarli nel cestino ed avrebbe cestinato lui (in un secondo tempo) quelli che riteneva non più necessari.
L’algoritmo che dovetti implementare per cancellare ciascun file fa uso di una API di Windows ed il codice è simile a quello che segue:
Private Type SHFILEOPSTRUCT hWnd As Long wFunc As Long pFrom As String pTo As String fFlags As Integer fAborted As Boolean hNameMaps As Long sProgress As String End Type Private Const FO_DELETE = &H3 Private Const FOF_ALLOWUNDO = &H40 Private Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long Public Function SpostaNelCestino(file_name As String) Dim SHFileOp As SHFILEOPSTRUCT With SHFileOp .wFunc = FO_DELETE .pFrom = file_name .fFlags = FOF_ALLOWUNDO End With SHFileOperation SHFileOp End Sub