SHFileOperation删除和拷贝文件(夹)

    技术2022-05-12  9

    来源:http://yecheng110.blog.hexun.com/9954041_d.html

     

     

     

     

    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;}


    最新回复(0)