几个小时以来,我一直在努力解决这个问题,它在 Windows Vista 和 Windows 7 上完美运行,但是当我在 Windows XP 上运行它时,它失败了,没有任何消息。不幸的是,我没有 XP 下的开发环境,所以我不能通过调试器运行它来检查,我是否错过了一些非常明显的东西?同一段代码实际上使用 CopyFile
和一些命令将数据写出到 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);`
最佳答案
因此,由于某些奇怪的原因,使用 SHFileOperation
将强制出现 Windows XP(但不是 Vista 或 7)的确认对话框,并忽略标志以告诉它只是确认。在运行拷贝之前使用 CreateDirectory()
的简单修复,不需要确认对话框。
关于c++ - 移动文件夹 Windows C++ : Works Vista and up, 不是 XP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15251170/