SHFILEOPSTRUCT fileop;
fileop.hwnd = this->m_hWnd;
fileop.wFunc = FO_COPY;
fileop.pFrom = "d:\\temp";
fileop.pTo = "e:\\";
fileop.fFlags = FOF_SILENT | FOF_NOCONFIRMATION;
if(SHFileOperation(&fileop) != 0)
MessageBox("cuowu");
---- FOF_FILESONLY:不执行通配符,只执行文件.
---- FOF_ALLOWUNDO:保存 UNDO信息,以便恢复.
---- FOF_NOCONFIRMATION: 在出现目标文件已存在的时候,如果不设置此项
,则它会出现确认是否覆盖的对话框,设置此项则自动确认,进行覆盖,不出
现对话框。
--- FOF_NOERRORUI: 设置此项后,当文件处理过程中出现错误时,不出现错误
提示,否则会进行错误提示。
---- FOF_RENAMEONCOLLISION: 当已存在文件名时,对其进行更换文件名提示
。
---- FOF_SILENT: 不显示进度对话框。
---- FOF_WANTMAPPINGHANDLE: 要求SHFileOperation()函数返回正处于操作
状态的实际文件列表,文件列表名柄保存在hNameMappings成员中。
SHFILEOPSTRUCT将包含一个SHNAMEMAPPING结构的数组,此数组保存由SHELL计
算的每个处于操作状态的文件的新旧路径。
这种方法可以复制文件夹
可以用shell编程
我大致写了一下,但是没有作非法检测
#include <shellapi.h>
void XCopy(LPCTSTR lpszSourceDir, LPCTSTR lpszDestDir)
{
SHFILEOPSTRUCT fop;
memset(&fop, 0, sizeof(fop));
fop.wFunc = FO_COPY;
fop.pFrom = lpszSourceDir;
fop.pTo = lpszDestDir;
fop.fFlags = FOF_NOCONFIRMATION;
SHFileOperation(&fop);
}