File Operation using SHFileOperation
SHFILEOPSTRUCT
Original link: http://winapi.freetechsecrets.com/win32/WIN32SHFILEOPSTRUCT.htm
Reference linke: SHFileOperation方法拷贝文件
Contains information that the SHFileOperation function uses to perform file operations.
typedef struct _SHFILEOPSTRUCT { // shfos
HWND hwnd;
UINT wFunc;
LPCSTR pFrom;
LPCSTR pTo;
FILEOP_FLAGS fFlags;
BOOL fAnyOperationsAborted;
LPVOID hNameMappings;
LPCSTR lpszProgressTitle;
} SHFILEOPSTRUCT, FAR *LPSHFILEOPSTRUCT;
Members
hwnd
Handle of the dialog box to use to display information about the status of the operation.
wFunc
Operation to perform. This member can be one of the following values:
|
FO_COPY |
Copies the files specified by pFrom to the location specified by pTo. |
|
FO_DELETE |
Deletes the files specified by pFrom (pTo is ignored). |
|
FO_MOVE |
Moves the files specified by pFrom to the location specified by pTo. |
|
FO_RENAME |
Renames the files specified by pFrom. |
pFrom
Pointer to a buffer that specifies one or more source file names. Multiple names must be null-separated. The list of names must be double null-terminated.
pTo
Pointer to a buffer that contains the name of the destination file or directory. The buffer can contain mutiple destination file names if the fFlags member specifies FOF_MULTIDESTFILES. Multiple names must be null-separated. The list of names must be double null-terminated.
fFlags
Flags that control the file operation. This member can be a combination of the following values:
|
FOF_ALLOWUNDO |
Preserves undo information, if possible. |
|
FOF_CONFIRMMOUSE |
Not implemented. |
|
FOF_FILESONLY |
Performs the operation only on files if a wildcard filename (*.*) is specified. |
|
FOF_MULTIDESTFILES |
Indicates that the pTo member specifies multiple destination files (one for each source file) rather than one directory where all source files are to be deposited. |
|
FOF_NOCONFIRMATION |
Responds with "yes to all" for any dialog box that is displayed. |
|
FOF_NOCONFIRMMKDIR |
Does not confirm the creation of a new directory if the operation requires one to be created. |
|
FOF_RENAMEONCOLLISION |
Gives the file being operated on a new name (such as "Copy #1 of...") in a move, copy, or rename operation if a file of the target name already exists. |
|
FOF_SILENT |
Does not display a progress dialog box. |
|
FOF_SIMPLEPROGRESS |
Displays a progress dialog box, but does not show the filenames. |
|
FOF_WANTMAPPINGHANDLE |
Fills in the hNameMappings member. The handle must be freed by using the SHFreeNameMappings function. |
fAnyOperationsAborted
Value that receives TRUE if the user aborted any file operations before they were completed or FALSE otherwise.
hNameMappings
Handle of a filename mapping object that contains an array of SHNAMEMAPPING structures. Each structure contains the old and new path names for each file that was moved, copied, or renamed. This member is used only if fFlags includes FOF_WANTMAPPINGHANDLE.
lpszProgressTitle
Pointer to a string to use as the title for a progress dialog box. This member is used only if fFlags includes FOF_SIMPLEPROGRESS.
Remarks
If pFrom or pTo are unqualified names, the current directories are taken from the global current drive and directory settings as managed by the GetCurrentDirectory and SetCurrentDirectory functions.
See Also
GetCurrentDirectory, SetCurrentDirectory, SHFileOperation, SHFreeNameMappings, SHNAMEMAPPING
__________________________________________________________________________________________
Example:
Copy a file to a specific path and rename it.
TCHAR* chFrom =_T("C:\\TEST\\A\\gg.txt");
TCHAR* chTo=_T("C:\\TEST\\B\\gg.txt");
TCHAR* chNewName=_T("C:\\TEST\\B\\new.txt");
SHFILEOPSTRUCT shFileOp;
ZeroMemory(&shFileOp, sizeof(SHFILEOPSTRUCT));
shFileOp.wFunc=FO_COPY;
shFileOp.pFrom=chFrom+'\0';
shFileOp.pTo=chTo+'\0';
shFileOp.fFlags=FOF_NOCONFIRMATION|FOF_SILENT;
DWORD dwCopyValue= SHFileOperation (&shFileOp);
//char buffer[32];
//ltoa((long)dwCopyValue, buffer, 10);
char procID[];
sprintf(procID, "%d",dwCopyValue);
if(dwCopyValue!=)
{
CString strMessage;
strMessage.Format(_T("The copy operation failed.\n The error code of SHFileOperation is %d"), dwCopyValue);
MessageBox(NULL, strMessage , _T("Alert"), MB_OK);
return dwCopyValue;
} shFileOp.wFunc=FO_RENAME+'\0';
shFileOp.pFrom=chTo+'\0';
shFileOp.pTo=chNewName+'\0'; DWORD dwRenameValue= SHFileOperation (&shFileOp);
if(dwRenameValue!=)
{
MessageBox(NULL, _T("The rename operation failed, error code is ! "+dwRenameValue), _T("Alert"), MB_OK);
return dwRenameValue;
}
Possible error code:
Go to this link System Error Codes to see what each code means.
1) SHFileOperation returns 124
124 means:
ERROR_INVALID_LEVEL
124 (0x7C)
The system call level is not correct.
DE_INVALIDFILES
0x7C
The path in the source or destination or both was invalid.
Make sure the source or destination path is valid.
2) SHFileOperation returns 2
ERROR_FILE_NOT_FOUND
2 (0x2)
The system cannot find the file specified.
Make sure the file being operated exists.
File Operation using SHFileOperation的更多相关文章
- mysql数据库报错:InnoDB: Operating system error number 13 in a file operation
环境:centos6.5 x86_64 启动mysql发现日志报错(日志路径可以查看/etc/my.cnf的配置) 160722 10:34:08 [Note] Found 42570716 of 4 ...
- InnoDB: Operating system error number 87 in a file operation. 错误87的解决方法
InnoDB: Operating system error number 87 in a file operation. 错误87的解决方法 140628 8:10:48 [Note] Plugi ...
- Python:文件操作技巧(File operation)(转)
Python:文件操作技巧(File operation) 读写文件 # ! /usr/bin/python # -*- coding: utf8 -*- spath = " D:/dow ...
- Adobe ZXPInstaller 报错 Installation failed because of a file operation error.
1. Drag a ZXP file or click here to select a file. 拖放一个 zxp 文件或点击打开选择一个 zxp 文件来安装: 2. Installation f ...
- Python & file operation mode
Python & file operation mode create/read/write/append mode https://docs.python.org/3/library/fun ...
- Mac OS X系统下,svn: Can't remove file Operation not permitted.解决方案
当你的svn出现类似以下错误时,提示Operation not permitted之类的问题,说明项目下 .svn文件夹内的文件权限有问题. 一般是由于windows和mac操作系统同时操作同个svn ...
- PythonStudy——文件操作 File operation
# 文件:就是硬盘的一块存储空间 # 1.使用文件的三步骤: # 打开文件- 得到文件对象:找到数据存放在硬盘的位置,让操作系统持有该空间,具有操作权# 硬盘空间 被 操作系统持有# 文件对象f 被 ...
- file operation note
从HLE回来,大家拍了2499张照片,分放在N个文件夹下,下面的python将下层目录中文件移动到上层 import os,shutil dst=os.getcwd()+os.sep for path ...
- python file operation
file.open(name[,mode[,buffering]]) 模式的类型有: r 默认只读 w 以写方式打开,如果文件不存在则会先创建,如果文件存在则先把文件内容清空(truncate ...
随机推荐
- HDU 5289 Assignment(2015 多校第一场二分 + RMQ)
Assignment Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total ...
- Chart控件的多种使用方法
花了近一周时间专门研究.net 3.5平台提供的Chart控件的使用方法,感觉该控件的功能很强大,做出的图表效果也很美观,使用方法也并不复杂.如今先讲下Chart控件的部署及一些基本使用方法. 一.安 ...
- 【49】了解new_handler的行为
1.使用operator new无法获取内存时,对于旧式编译器,会返回一个null指针.对于新式编译器,会抛出一个异常. 2.考虑下面的需求,当operator new 无法获取内存时,程序员期望获得 ...
- 详解Android Handler的使用
我们进行Android开发时,Handler可以说是使用非常频繁的一个概念,它的用处不言而喻.本文就详细介绍Handler的基本概念和用法. Handler的基本概念 Handler主 ...
- yii 数据库迁移
在我们开发程序的过程中,数据库的结构也是不断调整的.我们的开发中要保证代码和数据库库的同步.因为我们的应用离不开数据库.例如: 在开发过程中,我们经常需要增加一个新的表,或者我们后期投入运营的产品,可 ...
- firefly的rpc。。
firefly使用了twisted的pb 来实现rpc: http://twistedmatrix.com/documents/current/core/howto/pb-usage.html 服务端 ...
- Linux性能实时监测工具 Netdata
http://www.oschina.net/p/netdata?fromerr=hjJMgUjE#rd
- 启动android程序和虚拟机时候出现如下错误的解决方法
启动android程序和虚拟机时候出现如下错误的解决方法. 错误重现: [2011-07-13 16:22:48 - Emulator] invalid command-line parameter: ...
- Locally Weighted Regression
简单回顾一下线性回归.我们使用了如下变量:\(x\)—输入变量/特征:\(y\)—目标变量:\((x,y)\)—单个训练样本:\(m\)—训练集中的样本数目:\(n\)—特征维度:\((x^{(i)} ...
- linux crt
1.仿真 终端选linux ANSI颜色[有颜色了] 使用颜色方案[颜色加深了] 2.外观 选传统的 ,utf-8 就不会乱码了