簡體   English   中英

移動文件夾Windows C ++:Vista和更高版本,而不是XP

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM