大家好,又见面了,我是你们的朋友全栈君。[WinAPI]ShFileOperation函数详解
2010-04-11 10:24
ShFileOperation只有一个参数是LPSHFILEOPSTRUCT型的相当于delphi中的TSHFileOpStruct;
c语言定义为:
typedef struct _SHFILEOPSTRUCT{
HWND hwnd;
UINT wFunc;
LPCSTR pFrom;
LPCSTR pTo;
FILEOP_FLAGS fFlags;
BOOL fAnyOperationsAborted;
LPVOID hNameMappings;
LPCSTR lpszProgressTitle;
} SHFILEOPSTRUCT, FAR *LPSHFILEOPSTRUCT;
相应的pascal就是:
type
_SHFILEOPSTRUCTA = packed record
Wnd: HWND;
wFunc: UINT;
pFrom: PAnsiChar;
pTo: PAnsiChar;
fFlags: FILEOP_FLAGS;
fAnyOperationsAborted: BOOL;
hNameMappings: Pointer;
lpszProgressTitle: PAnsiChar; { only used if FOF_SIMPLEPROGRESS }
end;
hwnd:用来显示操作状态的对话框句柄。 例中是form1的句柄
wFunc:执行的操作。可以是以下各值:(例中是FO_COPY)
FO_COPY:拷贝pfrom域中指定的(目录,例中是’c:\a’)到pto中指定的位置(例中为’c:\b’)
FO_DELET:删除pfrom中指定的文件. (pTo不用)
FO_MOVE:移动PFrom中指定的文件到pto中指定的位置。
FO_RENAME:给PFrom中指定的文件改名。
pFrom:指定一个或多个源文件名的缓冲区地址。多个名字必须用NULL分隔。名字列表必须用两个NULL(nil,’\0′)来结束。
pTo:目标文件或目录名缓冲区地址。 如果fFlags域指定FOF_MULTIDESTFILES,缓冲区可以包含多个目标文件名。多个名字必须用NULL分隔。名字列表必须用两个NULL(nil,’\0′)
fFlags :控制操作的标志,可以是以下各值组合:
FOF_ALLOWUNDO:保留Undo信息, 如果pFrom没有包含全的绝对的路径或文件名此值忽略。
FOF_CONFIRMMOUSE:没有实现.
FOF_FILESONLY:只有文件名使用通配符时(*.*)才对文件操作。
FOF_MULTIDESTFILES: pTo域指一定了多个目标文件.(一个对就一个源文件) 而不是指定一个目录来存放所有源文件
FOF_NOCONFIRMATION:所有显示的对话框全部选择yes to all
FOF_NOCONFIRMMKDIR: 如果需要创建一个新目录不确认。
FOF_NOCOPYSECURITYATTRIBS: 4.71. Microsoft® Windows NT® only. 安全属性不复制.
FOF_NOERRORUI:发生错误时不提供用户接口。
FOF_RENAMEONCOLLISION: move,copy,rename操作时如目标文件存在,给操作的文件另起一个名字。
FOF_SILENT:不显示进度对话框
FOF_SIMPLEPROGRESS:显示进度对话框但不显示文件名。
FOF_WANTMAPPINGHANDLE:如果指定了FOF_RENAMEONCOLLISION 当任何文件改名时将填写hNameMappings 域
fAnyOperationsAborted:当用户在完成前取消任何文件操作时赋值TRUE,否则FALSE.
hNameMappings:一个包含SHNAMEMAPPING结构数组的文件名映射对象句柄. 每一个(SHNAMEMAPPING)结构包括一个旧的或新的目录名为了每一个移动的复制的改名的文件。这个域仅在fFlags域包括 FOF_WANTMAPPINGHANDLES标志时使用。句柄必须使用SHFreeNameMappings来释放(用完后)
lpszProgressTitle :进程对话框的标题串地址。仅在fFlags中包括FOF_SIMPLEPROGRESS标志时使用。
如果pFrom和pTo不是一个绝对目录时,当前目录从全局当前盘符和当前目录中取得,同时目录设置由GetCurrentDirectory 和SetCurrentDirectory 函数维护.
另外附上:
ExtractFileName//获得文件名
ExtractFilePath//获得文件路径
ExtractFileExt//获得文件扩展名
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/160988.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...