我正在使用该函数SHFileOperation()将文件发送到回收站,我得到2个错误,我不知道它们是什么意思,因为使用此函数时错误代码不是GetLastError()值.
当函数SHFileOperation()失败时,返回值为0x57(十进制87)和0x2(十进制2).任何人都可以帮助我发现这些错误的定义(特别是当您考虑使用此功能时,错误不是GetLastError()代码的一部分).
一些重要信息:
我正在使用Windows 7(我知道MSDN说使用IFileOperation而不是SHFileOperation,但我想使我的应用程序向后兼容,这就是我使用SHFileOperation的原因).如果错误发生,因为我在Windows 7上使用SHFileOperation,我可以用什么解决方案使这个工作在2000及以上的所有Windows版本上运行?
我已经进行了广泛的调试,据我所知,我的SHFILEOPSTRUCT是正确的(使用了正确的标志,.pFrom是一个双零结束的字符串).我确定的一件事是我的文件路径是正确的(导致一个真实的文件,它正确格式化).
大约是SHFileOperation()的2/5倍,这意味着它将文件发送到回收站并且不会返回错误
.
BOOL result;
SHFILEOPSTRUCT fileStruct;
fileStruct.hwnd = hwnd;
fileStruct.wFunc = FO_DELETE;
fileStruct.pFrom = dest.c_str();
fileStruct.fFlags = FOF_FILESONLY; // FOF_ALLOWUNDO
fileStruct.fAnyOperationsAborted = result;
// Call operation(delete file)
int success = SHFileOperation( &fileStruct );
// if delete was successful
if ( success != 0 )
{
printf( "%s \t %X %d \n", dest.c_str(), success, success );
cout << result << endl;
MessageBox( hwnd, "Failed to delete …Run Code Online (Sandbox Code Playgroud)