C 我能';无法使用SHFILE操作删除文件
我想将文件删除到回收站。我正在使用这个代码C 我能';无法使用SHFILE操作删除文件,c,windows,winapi,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_NOCONFIRMATIO
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;
我做错了什么?提前谢谢
t_res
,它应该给出错误代码并说明原因pFrom
获取文件,而不是单个文件,因此应使用两个零终止缓冲区,请参阅:您没有提到对此的任何分析,因此我的建议是深入研究文件名是如何表示的。这是正确的编码吗?您收到了什么错误?t\u res包含什么?对GetLastError()的调用返回什么?请尝试与我们分享。Error=124(Error\u INVALID\u LEVEL)@Sasha请用这些额外信息更新您的问题。@Sasha,Deanna:124没有
Error\u INVALID\u LEVEL
,而是DE\u INVALIDFILES
(请参阅下面的展开)。API函数支持\\?\格式,但我不一定期望它对SHFileOperation之类的Shell函数起作用。尝试向其传递一个普通路径,c:\WorkFolder\qweqw.docx.1。我在t_res error=124附近添加了注释。2.我添加了\0\0,错误是相同的。我猜它会看到您的第一个文件,然后您不会使用额外的零字符终止,它会继续解析以获取第二个文件名,它不是有效的名称,因此会出现错误。我建议您检查调试器中的内存,是否发送您认为应该存在的数据。最有可能的情况是文件名不正确。