失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 文件(夹)操作SHFileOperation (删除 复制 移动) 报错 无法读取源文件或磁盘

文件(夹)操作SHFileOperation (删除 复制 移动) 报错 无法读取源文件或磁盘

时间:2020-06-13 17:17:20

相关推荐

文件(夹)操作SHFileOperation (删除 复制 移动) 报错 无法读取源文件或磁盘

int SHFileOperation( LPSHFILEOPSTRUCT lpFileOp);

1 typedef struct _SHFILEOPSTRUCT {

2 HWND hwnd;//指向发送消息的窗口

3 UINT wFunc;//执行的操作

4 LPCTSTR pFrom;//源文件名

5 LPCTSTR pTo;//目标文件名

6 FILEOP_FLAGS fFlags;//操作与确认标识

7 BOOL fAnyOperationsAborted;//操作是否终止

8 LPVOID hNameMappings;//文件映射

9 LPCTSTR lpszProgressTitle;//进度条标题

} SHFILEOPSTRUCT, *LPSHFILEOPSTRUCT;

wFunc:要执行的操作

1.FO_COPY:复制2.FO_DELETE:删除3.FO_MOVE:移动4.FO_RENAME:重命名

pFrom:源文件名

MSDN上说要以两个\0结束,所以一般的字符串必须还要加上一个\0

如果不注意这个问题 报错:无法读取源文件或磁盘

比如:

1 // 错误的用法2LPTSTR pszSource = L"C:\\Windows";3 4 // 正确的用法5 LPTSTR pszSource = L"C:\\Windows\0";

对于CString,正确的用法是这样的

1 CString strSource("C:\\Windows");2 3 strSource += '\0';//注意必须是'\0'而不是"\0"!~!!

fFlags:执行标识

1FOF_SILENT //不产生正在复制的对话框2FOF_NOCONFIRMMKDIR//如果目的目录不存在,就默认创建3FOF_NOCONFIRMATION //不出现确认文件替换对话框(默认替换原来的文i件)4FOF_NOERRORUI//不出现错误对话框

SHFILEOPSTRUCT FileOp;FileOp.fFlags = FOF_NOCONFIRMATION;FileOp.hNameMappings = NULL;FileOp.hwnd = NULL;FileOp.lpszProgressTitle = NULL;FileOp.pFrom = strpath;FileOp.pTo = NULL;FileOp.wFunc = FO_DELETE;SHFileOperation(&FileOp);

如果觉得《文件(夹)操作SHFileOperation (删除 复制 移动) 报错 无法读取源文件或磁盘》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。