ファイル・フォルダーをごみ箱へ |
ファイル・フォルダーをごみ箱へ(SHFileOperation API関数を使用) (098) | |
プログラムでファイルをいきなり削除するには、少しためらいますが、ごみ箱へ移動する分には、必要なら元に戻せますし、安心ですネ! 又、ファイル事フォルダーも削除できますので便利です。 Option Explicit 'SampleNo=098 WindowsXP VB6.0(SP5) 2002.05.18 'ファイル操作(コピー・削除・移動・名前を変更)を行う(P1200) Private Declare Function SHFileOperation Lib "shell32.dll" _ Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long '動作方法を指定する構造体 Private Type SHFILEOPSTRUCT hWnd As Long wFunc As Long pFrom As String pTo As String fFlags As Integer fAnyOperationsAborted As Long hNameMappings As Long lpszProgressTitle As String End Type 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& '複数ファイル指定 Private Sub sFileDelete(meForm As Form, DelFile As String) '************************************************************** '* SHFileOperation関数を呼び出しファイルをごみ箱に送る * '* meForm = ダイアログを表示するForm * '* DelFile = 削除するファイル名(Path付) * '* 複数のファイルを指定する場合vbNullCharで区切り * '* 最後は二つのvbNullCharで終わる * '************************************************************** On Error Resume Next Dim lpFileOp As SHFILEOPSTRUCT Dim Result As Long Dim MyFlag As Long '指定方法はお好みで設定して下さい。 MyFlag = FOF_ALLOWUNDO 'ごみ箱へ MyFlag = MyFlag + FOF_NOCONFIRMATION '確認しない MyFlag = MyFlag + FOF_MULTIDESTFILES '複数ファイル MyFlag = MyFlag + FOF_NOERRORUI 'エラーのダイアログを非表示 ' ファイル操作に関する情報を指定 With lpFileOp .hWnd = meForm.hWnd ' ダイアログの親ウィンドウハンドルを指定 .wFunc = FO_DELETE ' 削除を指定 .pFrom = DelFile ' 削除するディレクトリを指定 ' .pTo = 操作先のファイル名・ディレクトリ名 .fFlags = MyFlag '動作方法を指定 End With ' ファイル操作を実行 Result = SHFileOperation(lpFileOp) End Sub Private Sub Command1_Click() 'Dim MyFile As String '複数のファイルを指定する場合vbNullCharで区切り '最後は二つのvbNullCharで終わる 'フォルダーごと削除する場合はフォルダー名を指定する 'MyFile = "C:\MyFolder\MyFile1.Txt" & vbNullChar & _ "C:\MyFolder\MyFile2.Txt" & vbNullChar & vbNullChar Call sFileDelete(Me, "C:\MyFolder") 'MyFile End Sub |
|
今回はファイルをごみ箱へ削除するだけの関数になっておりますが、ファイル名変更やコピー・移動 等の機能も改造して組み込んで下さい。 又、ご利用に際しては十分テストを行って動作確認して下さい。 |
2002/05/19