2

ごみ箱にファイルを削除したい。私はこのコードを使用しています。

    SHFILEOPSTRUCT FileOp;
    FileOp.hwnd = NULL;
    FileOp.wFunc=FO_DELETE; 
    FileOp.pFrom= lpFileName; //it's my value  \\?\C:\WorkFolder\qweqw.docx
    FileOp.pTo = NULL;
    FileOp.fFlags=FOF_ALLOWUNDO|FOF_NOCONFIRMATION;
    FileOp.hNameMappings=NULL;      
    int t_res = SHFileOperation(&FileOp); // t_res = 124
    return t_res;

何が間違っているのですか?前もって感謝します。

4

2 に答える 2

1
  1. とは何ですかt_res。エラー コードが表示され、理由が示されます。
  2. pFrom単一のファイルではなくファイルを取ることに注意してください。そのため、バッファーを 2 つのゼロで終了する必要があります。MSDN からのドキュメントの抜粋を参照してください。

このメンバーは 1 つの null で終わる文字列として宣言されていますが、実際には null で区切られた複数のファイル名を保持できるバッファーです。各ファイル名は、1 つの NULL 文字で終了します。最後のファイル名は、バッファーの終わりを示すために 2 つの NULL 文字 ("\0\0") で終了します。

于 2012-06-27T12:01:50.310 に答える
0

ドキュメントによると、エラーコードは次のとおりです。

DE_INVALIDFILES 0x7C ソースまたは宛先、あるいはその両方のパスが無効でした。

これについての分析については何も言及していないので、私の提案は、ファイル名がどのように表現されているかを掘り下げることです。それは適切なエンコーディングですか?

于 2012-06-27T12:03:21.817 に答える