我无法使用SHFileOperation删除文件

时间:2012-06-27 11:58:08

标签: c windows winapi

我想将文件删除到回收站。我使用这段代码。

    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;

我做错了什么?提前谢谢。

2 个答案:

答案 0 :(得分:1)

  1. 什么是t_res,它应该提供错误代码并提出原因
  2. 请注意,pFrom需要文件,而不是单个文件,因此您应该使用两个零来终止缓冲区,请参阅doc excerpt from MSDN
  3.   

    虽然此成员被声明为单个以null结尾的字符串,   它实际上是一个可以容纳多个空分隔文件的缓冲区   名。每个文件名都由一个NULL字符终止。该   最后一个文件名以双NULL字符(“\ 0 \ 0”)结尾   表示缓冲区的结束。

答案 1 :(得分:0)

错误代码为according to the documentation

  

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

你没有提到任何对此的分析,所以我的建议是深入研究如何表示文件名。这是正确的编码吗?