BOOL DeleteFolder(LPCTSTR lpszPath) { SHFILEOPSTRUCT FileOp; ZeroMemory((void*)&FileOp,sizeof(SHFILEOPSTRUCT));
FileOp.fFlags = FOF_NOCONFIRMATION; FileOp.hNameMappings = NULL; FileOp.hwnd = NULL; FileOp.lpszProgressTitle = NULL; FileOp.pFrom = lpszPath; FileOp.pTo = NULL; FileOp.wFunc = FO_DELETE;
return SHFileOperation(&FileOp) == 0; }
|
这是网上找的一段代码,但是在删除目录时总是说无法读取源文件或磁盘。但是目录确实存在。
查了查MSDN,网上看到别人也有同样的问题,看看他们的解答。原来SHFileOperation中的pFrom可以表示多个路径,各个路径之间以'\0'分隔,最后以'\0\0'(即连续的两个'\0')结束,
于是改了过来。可是还是不行。
去掉路径最后的一个'\'("c:\\data\\"改为"c:\\data"),成功。
下面这个函数需要注意同样的问题。
BOOL CopyFolder(LPCTSTR lpszFromPath,LPCTSTR lpszToPath) { SHFILEOPSTRUCT FileOp; ZeroMemory((void*)&FileOp,sizeof(SHFILEOPSTRUCT)); FileOp.fFlags = FOF_NOCONFIRMATION ; FileOp.hNameMappings = NULL; FileOp.hwnd = NULL; FileOp.lpszProgressTitle = NULL; FileOp.pFrom = lpszFromPath; FileOp.pTo = lpszToPath; FileOp.wFunc = FO_COPY; return SHFileOperation(&FileOp) == 0; }
|
阅读(16013) | 评论(3) | 转发(0) |