我想将文件删除到回收站。我使用这段代码。
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;
我做错了什么?提前谢谢。
答案 0 :(得分:1)
t_res
,它应该提供错误代码并提出原因pFrom
需要文件,而不是单个文件,因此您应该使用两个零来终止缓冲区,请参阅doc excerpt from MSDN:虽然此成员被声明为单个以null结尾的字符串, 它实际上是一个可以容纳多个空分隔文件的缓冲区 名。每个文件名都由一个NULL字符终止。该 最后一个文件名以双NULL字符(“\ 0 \ 0”)结尾 表示缓冲区的结束。
答案 1 :(得分:0)
错误代码为according to the documentation:
DE_INVALIDFILES 0x7C源或目标中的路径或两者都无效。
你没有提到任何对此的分析,所以我的建议是深入研究如何表示文件名。这是正确的编码吗?