我在使用 PathCombine 功能时遇到了一些困难。它似乎不能与 SHFileOperation() 一起正常工作。我的代码如下:
//beginning of method
TCHAR* root = new TCHAR[MAX_PATH];
root = L"C:\\Users\\jhow\\Desktop\\\0";
//later on in the method
TCHAR* t1Dir = new TCHAR[MAX_PATH]; //root
TCHAR* t2Dir = new TCHAR[MAX_PATH]; //temp
PathCombine(t1Dir,root,L"Folder1\\%REPLACE_THIS%\\\0");
PathCombine(t2Dir,root,L"Folder1\\temp\0");
sf.pFrom = t1Dir;
//sf.pFrom = L"C:\\Users\\jhow\\Desktop\\Folder1\\%REPLACE_THIS%";
sf.pTo = temporaryDir;
//Copy files
int n = SHFileOperation(&sf);
当我像上面那样拥有它时,该方法会看到 sf.pTo,但由于某种原因它看不到 sf.pFrom(即使在路径名末尾使用了 \ 和 \0 的不同组合之后)。n 变为 2,我认为这意味着找不到文件...但是例如,当我注释掉时。
sf.pFrom = t1Dir;
并将其替换为:
sf.pFrom = L"C:\\Users\\jhow\\Desktop\\Folder1\\%REPLACE_THIS%";
SHFileOperation() 有效...它返回零,我可以看到所有文件都已复制到目录中。我发现这很奇怪,因为它们似乎是相同的字符串(即使我调试并将鼠标悬停在变量上)......有人碰巧知道为什么会这样吗?我的语法或逻辑有问题吗?因为我看不到。我正在使用 Visual Studio 2008。非常感谢您抽出宝贵的时间。