Bypass_DeleteFileについてNo.09808
haru2 さん 05/09/27 09:36
 
    if (dllfunc("Bypass_DeleteFile", "f:\\a.txt")) {
        message "(削除)";
    }
    if (dllfunc("Bypass_DeleteFile", "D:\\TuruKame\\QC-S\\受信添付\\050111_0
0\\a.txt")) {
        message "(削除)2";
    }

 上記マクロを実行しました。
 後者のファイルが削除されません。
 QC-Sは、アカウントです。
 何か間違いがあれば、教えて下さい。
 よろしくお願いします。

 ver4.55b3,win95です。

[ ]
RE:09808 Bypass_DeleteFileについてNo.09809
秀まるお さん 05/09/27 10:39
 
 Bypass_GetLastErrorでエラーコードを調べると原因が分かると思います。

    if (dllfunc("Bypass_DeleteFile", "D:\\TuruKame\\QC-S\\受信添付\\050111_0
0\\a.txt")) {
        message "(削除)2";
    } else {
        #code = dllfunc("Bypass_GetLastError");
        message "削除失敗、エラーコード = " + str(#code);
    }

 たとえばエラーコードが3なら、ERROR_PATH_NOT_FOUND、2なら
ERROR_FILE_NOT_FOUND などとなります。

[ ]
RE:09809 Bypass_DeleteFileについてNo.09811
haru2 さん 05/09/27 11:44
 
> Bypass_GetLastErrorでエラーコードを調べると原因が分かると思います。
 5が表示されました。
 調べると、
 「ERROR_ACCESS_DENIED 5 0x00000005 アクセスが拒否されました。」
 ファイルの属性が読みとり専用、アーカイブだからなんでしょうか?
 属性を変更する方法を教えて頂けませんか。
 (Bypass_SetFileAttributesを使うと思うのですが。)
 よろしくお願いします。

[ ]
RE:09811 Bypass_DeleteFileについてNo.09812
秀まるお さん 05/09/27 12:39
 
 たしかに、読みとり専用属性だとだめなようです。

    #n = dllfunc("Bypass_SetFileAttributes", "ファイル名", 0x20);

 のような処理を削除前に入れればいいみたいです。

参考情報:
#define FILE_ATTRIBUTE_READONLY         0x00000001  
#define FILE_ATTRIBUTE_HIDDEN           0x00000002  
#define FILE_ATTRIBUTE_SYSTEM           0x00000004  
#define FILE_ATTRIBUTE_DIRECTORY        0x00000010  
#define FILE_ATTRIBUTE_ARCHIVE          0x00000020  
#define FILE_ATTRIBUTE_NORMAL           0x00000080  
#define FILE_ATTRIBUTE_TEMPORARY        0x00000100  
#define FILE_ATTRIBUTE_COMPRESSED       0x00000800  
#define FILE_ATTRIBUTE_OFFLINE          0x00001000  

[ ]
RE:09812 Bypass_DeleteFileについてNo.09813
haru2 さん 05/09/27 15:56
 
>    #n = dllfunc("Bypass_SetFileAttributes", "ファイル名", 0x20);
> のような処理を削除前に入れればいいみたいです。
 うまくいきました。
 ありがとうございます。

[ ]