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需要文件,而不是单个文件,因此您应该用两个零终止缓冲区,请参阅MSDN 的文档摘录

尽管此成员被声明为单个以空字符结尾的字符串,但它实际上是一个可以保存多个以空字符分隔的文件名的缓冲区。每个文件名都以单个 NULL 字符结尾。最后一个文件名以双 NULL 字符 ("\0\0") 结束,表示缓冲区结束。

于 2012-06-27T12:01:50.310 回答
0

根据文档,错误代码是:

DE_INVALIDFILES 0x7C 源或目标或两者中的路径无效。

您没有提及对此的任何分析,因此我的建议是深入研究文件名的表示方式。它是正确的编码吗?

于 2012-06-27T12:03:21.817 回答