几个小时以来,我一直在努力解决这个问题,它在 Windows Vista 和 Windows 7 上运行良好,但是当我在 Windows XP 上运行它时,它失败了,没有任何消息。不幸的是,我没有 XP 下的开发环境,所以我不能只通过调试器运行它来检查,我是否错过了一些非常明显的东西?同一段代码实际上确实使用 aCopyFile
和几个命令来写出数据,C:\
所以如果它是一个权限错误,那就是一个奇怪的错误。
编辑:返回值为 1223,ERROR_CANCELLED
表示被用户取消。
编辑2:我禁用了s.fFlags,它立即弹出一个对话框,询问它是否应该创建dir-test
文件夹,所以我切换到FOF_NOCONFIRMATION
它似乎忽略了该标志。我也在删除过程中使用相同的SHFileOperation
方法使用它,因此它不适用于文件副本。
LPTSTR source = L"dir-test\\*\0";
LPTSTR dest = L"C:\\dir-test\0";
SHFILEOPSTRUCT s = { 0 };
s.hwnd = 0;
s.wFunc = FO_COPY;
s.fFlags = FOF_SILENT;
s.pTo = dest;
s.pFrom = source;
int n;
n = SHFileOperation(&s);`