TEMPファイルが使用中かを判定するには?

解決


アランブラ  2003-12-15 23:02:04  No: 80912

Win98 + VB6 にて、TEMPフォルダ内のファイルとフォルダを「ごみ箱」
にいれるツールをSHFileOperation()APIで作っています。

やりたい事は大体できているのですが、1つ問題があります。
「XXXXX を削除できません。アクセスできません。
ディスクがいっぱいでないか、ライトプロテクトされていないか
またはファイルが使用中でないか確認して下さい。」
という「ファイルの削除エラー」ダイアログが表示され、この時点で
処理が終了してしまいます。

上記の様な削除できないファイルがあった場合、それをスキップして
次のファイルを削除する処理に進みたいのです。

SHFileOperationの実行前に削除ファイルのリストを作成する際、
削除できないファイルを除外すればいいと思うのですが、
「TEMPファイルが使用中であるかないか」を判定するには
どうしたら宜しいのでしょうか?

宜しくお願いします。


oku  URL  2003-12-16 07:58:47  No: 80913

削除できないファイルを判定するじゃなく、
ダイアログが出ない方法ではだめですか?
構造体の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
こんな感じです。


アランブラ  2003-12-16 22:14:16  No: 80914

> 削除できないファイルを判定するじゃなく、
> ダイアログが出ない方法ではだめですか?
> 構造体のfFlagsに
> FOF_ALLOWUNDO = &H40とFOF_NOCONFIRMATION = &H10を
> 渡してやれば出来ます。

回答ありがとうございます。
「ファイルの削除エラー」ダイアログには、[OK]ボタンしか
ありませんので、FOF_NOCONFIRMATION フラグを使用しても
単に[OK]ボタンを自動選択するだけで、結果は同じでした。

「ファイルの削除エラー」ダイアログが出ると途中終了する
のは仕様と思いますので、やはりエラーを出さない様にする
しかないと思うのですが...

いろいろと、探してみたんですが、
http://www.bcap.co.jp/hanafusa/index.html
上記に、Name ステートメントをエラートラップする方法がありました。

他にも適当な方法がありましたら、ご教授おねがいします。


oku  URL  2003-12-17 10:11:31  No: 80915

すいません勘違いしてました。
確認ダイアログが出ないようになので、
削除エラーのダイアログも出ないと思ってました。

花ちゃんさんの所にも書かれてましたが
アプリがロックをかけていないものはリネーム出来ちゃいます。
まあリネームできるファイルは削除できるから良いかな?
自分も大昔にファイルが使用中かを判定するのに
Name ステートメントを使ってました。うーーん最近物忘れが…


アランブラ  2003-12-18 01:16:20  No: 80916

Name ステートメントで、うまくいきました。

いろいろと、ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加