[英]Moving Folder Windows C++: Works Vista and up, not XP
我一直在努力現在得到這個正確的幾個小時,和它完美的作品在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()
簡單修復,不需要確認對話框。
SHFILEOPSTRUCT
的文檔有此警告:
您的路徑應始終是完整路徑,這一點不容小覷。 如果pFrom或pTo成員是非限定名稱,則當前目錄將取自GetCurrentDirectory和SetCurrentDirectory函數管理的全局當前驅動器和目錄設置。
您的source
規范是不合格的名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.