2023年7月6日发(作者:)
关于的详细用法
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 函数维护.
慕容乾坤(2001-07-13 17:29)
我看楼上写的太详细了,根本不需要补充了。
我只是想强调两句,顺便得一点分。 :-)
如果要对多个文件进行操作,在PFROM和PTO两项中的文件名列表中,文件名
要用#0隔开,最后要用#0#0(双#0)终止,切记。
以下代码可以把C盘下的文件夹a复制成文件夹b:
uses ..., ShellAPI
procedure 1Click(Sender: TObject);
var
OpStruc: TSHFileOpStruct;
frombuf, tobuf: Array [0..128] of Char;
Begin
FillChar( frombuf, Sizeof(frombuf), 0 );
FillChar( tobuf, Sizeof(tobuf), 0 );
StrPCopy( frombuf, 'c:a' );
StrPCopy( tobuf, 'c:b' );
With OpStruc DO Begin
Wnd:= Handle;
wFunc:= FO_COPY;
pFrom:= @frombuf;
pTo:=@tobuf;
fFlags:= FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION;
fAnyOperationsAborted:= False;
hNameMappings:= Nil;
lpszProgressTitle:= Nil;
end;
( OpStruc );
end;
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1688598222a153667.html
评论列表(0条)