掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VB.NETでファイル削除して、ごみ箱に送るには? (ID:109539)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
VB.NETでファイル削除して、ごみ箱に送りたいと思うのですが、 System.IO.File.Delete("ファイルパス")ですと、ごみ箱に残りませんでした? VB6.0のころは、APIのSHFileOperationAを使ってやっていたので、それをつかえばと思いやってみたのですが、(以下ソース) Private Structure SHFILEOPSTRUCT Public hWnd As IntPtr Public wFunc As Integer <MarshalAs(UnmanagedType.LPStr)> Public pFrom As String <MarshalAs(UnmanagedType.LPStr)> Public pTo As String Public fFlags As Integer Public fAnyOperationsAborted As Boolean Public hNameMappings As Integer <MarshalAs(UnmanagedType.LPStr)> Public lpszProgressTitle As String End Structure Private Declare Function SHFileOperation Lib "shell32" _ Alias "SHFileOperationA" (ByRef lpFileOp As SHFILEOPSTRUCT) As Integer Public Const FO_MOVE = &H1 'ファイルの移動(pFrom から pTo へ移動) Public Const FO_COPY = &H2 'ファイルのコピー(pFrom から pTo へコピー) Public Const FO_DELETE = &H3 'ファイルの削除(pFrom を削除 pTo は無視されます) Public Const FO_RENAME = &H4 'ファイル名変更(pFrom の名前変更) Public Const FOF_MULTIDESTFILES = &H1 '受け側に複数のファイルを指定 Public Const FOF_CONFIRMMOUSE = &H2 '処理なし Public Const FOF_SILENT = &H4 '進捗ダイアログボックス非表示 Public Const FOF_RENAMEONCOLLISION = &H8 '同一ファイル名の場合名前変更(コピ〜○○○) Public Const FOF_NOCONFIRMATION = &H10 '確認操作なし Public Const FOF_WANTMAPPINGHANDLE = &H20 'マッピングハンドル取得 Public Const FOF_ALLOWUNDO = &H40 '削除の際ごみ箱に移動する Public Const FOF_FILESONLY = &H80 'ファイルのみを対象(*.* が指定された時) Public Const FOF_NOCONFIRMMKDIR = &H200 'フォルダ作成確認なし Public Const FOF_SIMPLEPROGRESS = &H100 '進捗ダイアログボックス表示 Public Function FileDelete(ByVal hwnd As IntPtr, ByVal FileName As String) As Integer Dim SFO As New SHFILEOPSTRUCT SFO.hWnd = hwnd SFO.wFunc = FO_DELETE SFO.pFrom = "D:\test\新規テキスト文書.txt" SFO.fFlags = FOF_ALLOWUNDO FileDelete = SHFileOperation(SFO) If FileDelete <> 0 Then If FileDelete <> 7 Then MsgBox("ファイル削除に失敗しました。") End If End If End Function "D:\test\新規テキスト文書.txt"は確かに存在しているのですが、 ファイルまたはフォルダの削除エラー ファイルを削除できません。送り側のファイルまたはディスクから読み取れません。というエラーがでてしまいます。 なぜでしょうか?
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.