Win98 + VB6 にて、TEMPフォルダ内のファイルとフォルダを「ごみ箱」
にいれるツールをSHFileOperation()APIで作っています。
やりたい事は大体できているのですが、1つ問題があります。
「XXXXX を削除できません。アクセスできません。
ディスクがいっぱいでないか、ライトプロテクトされていないか
またはファイルが使用中でないか確認して下さい。」
という「ファイルの削除エラー」ダイアログが表示され、この時点で
処理が終了してしまいます。
上記の様な削除できないファイルがあった場合、それをスキップして
次のファイルを削除する処理に進みたいのです。
SHFileOperationの実行前に削除ファイルのリストを作成する際、
削除できないファイルを除外すればいいと思うのですが、
「TEMPファイルが使用中であるかないか」を判定するには
どうしたら宜しいのでしょうか?
宜しくお願いします。
削除できないファイルを判定するじゃなく、
ダイアログが出ない方法ではだめですか?
構造体のfFlagsに
FOF_ALLOWUNDO = &H40とFOF_NOCONFIRMATION = &H10を
渡してやれば出来ます。
Private Const FOF_ALLOWUNDO = &H40 'ごみ箱に
Private Const FOF_NOCONFIRMATION = &H10 'ダイアログを非表示
With SHFILEOPSTRUCT1
〜省略〜
.fFlags = FOF_ALLOWUNDO Or FOF_NOCONFIRMATION
End With
こんな感じです。
> 削除できないファイルを判定するじゃなく、
> ダイアログが出ない方法ではだめですか?
> 構造体のfFlagsに
> FOF_ALLOWUNDO = &H40とFOF_NOCONFIRMATION = &H10を
> 渡してやれば出来ます。
回答ありがとうございます。
「ファイルの削除エラー」ダイアログには、[OK]ボタンしか
ありませんので、FOF_NOCONFIRMATION フラグを使用しても
単に[OK]ボタンを自動選択するだけで、結果は同じでした。
「ファイルの削除エラー」ダイアログが出ると途中終了する
のは仕様と思いますので、やはりエラーを出さない様にする
しかないと思うのですが...
いろいろと、探してみたんですが、
http://www.bcap.co.jp/hanafusa/index.html
上記に、Name ステートメントをエラートラップする方法がありました。
他にも適当な方法がありましたら、ご教授おねがいします。
すいません勘違いしてました。
確認ダイアログが出ないようになので、
削除エラーのダイアログも出ないと思ってました。
花ちゃんさんの所にも書かれてましたが
アプリがロックをかけていないものはリネーム出来ちゃいます。
まあリネームできるファイルは削除できるから良いかな?
自分も大昔にファイルが使用中かを判定するのに
Name ステートメントを使ってました。うーーん最近物忘れが…
Name ステートメントで、うまくいきました。
いろいろと、ありがとうございました。
ツイート | ![]() |