NonSoft

ファイルやフォルダをごみ箱へ移動するサンプル(VB6)


 サンプル(ソース/コード)
<このサンプルの概要>
このサンプルの仕様は、タイトルそのままです。プログラムで普通にファイル削除すると
「ごみ箱」には移動されず本当に削除されてしまうので、大事なデータを失ってしまう事
があります。その為、「ごみ箱」へ移動するプログラムが必要になります。

' ファイル操作用のAPI-----------------------------------------------------
Public Type SHFILEOPSTRUCT
    hWnd As Long
    wFunc As Long
    pFrom As String
    pTo As String
    fFlags As Integer
    fAnyOperationsAborted As Boolean
    hNameMappings As Long
    lpszProgressTitle As String
End Type
Public Declare Function SHFileOperation Lib "shell32" _
    Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
Private Const FO_DELETE = &H3&              ' 削除
Private Const FO_COPY = &H2                 ' コピー
Private Const FO_MOVE = &H1                 ' 移動
Private Const FO_RENAME = &H4               ' ファイル名変更
Private Const FOF_ALLOWUNDO = &H40&         ' ごみ箱へ
Private Const FOF_NOCONFIRMATION = &H10&    ' 確認ダイアログを表示しなし
Private Const FOF_NOERRORUI = &H400&        ' エラーダイアログを表示しない
Private Const FOF_MULTIDESTFILES = &H1&     ' 複数ファイルを指定する
' ------------------------------------------------------------------------
'
' 関数名    : RecyclerDelete
' 返り値    : 無し
' 引き数    : myForm  (i) : 親フォーム(meを指定する)
'           : fileName(i) : ごみ箱へ移動するファイルまたはフォルダ
' 機能説明  : ファイルやフォルダをごみ箱へ移動する
' 備考      :
' 著作権    : Copyright(C) 2007 のん All right reserved
'
Public Function RecyclerDelete(myForm As Form, fileName As String) As Long
    On Error GoTo ErrHandler
    RecyclerDelete = -1
    
    Dim SFOP As SHFILEOPSTRUCT
    SFOP.pFrom = fileName
    SFOP.hWnd = myForm.hWnd
    SFOP.wFunc = FO_DELETE
    SFOP.fFlags = FOF_ALLOWUNDO + FOF_NOERRORUI + FOF_NOCONFIRMATION
    RecyclerDelete = SHFileOperation(SFOP)
    
    Exit Function
ErrHandler:
    MsgBox Err.Description
    Exit Function
End Function