Windows默认文件操作(SHFileOperation)

Windows默认文件操作(SHFileOperation)

要实现使用系统自带文件操作,如文件的复制,删除,移动等等,我们就需要利用API函数(别忘记引用ShellAPI)来进行操作:

该函数在C语言中的声明:WINSHELLAPI int WINAPI SHFileOperation(LPSHFILEOPSTRUCT lpFileOp);

           在Delphi中的声明:function SHFileOperation(const lpFileOp: TSHFileOpStruct): Integer; stdcall;

如是delphi在uses 中加入SHELLAPI

在使用该函数前需要对TSHFileOpStruct进行赋值,其中TSHFileOpStruct是一种类似记录类型的类型,子类如下:
HWND hwnd; //父窗口句柄
    UINT wFunc; //要执行的动作
   LPCTSTR pFrom; //源文件路径,可以是多个文件
   LPCTSTR pTo; //目标路径,可以是路径或文件名
   FILEOP_FLAGS fFlags; //标志,附加选项
   BOOL fAnyOperationsAborted; //是否可被中断
   LPVOID hNameMappings; //文件映射名字,可在其它 Shell 函数中使用
   LPCTSTR lpszProgressTitle; // 只在 FOF_SIMPLEPROGRESS 时,指定对话框的标题。

wFunc 可以为:
   FO_MOVE 0x0001 移动文件
    FO_COPY 0x0002 复制文件
   FO_DELETE 0x0003 删除文件,只使用 pFrom
   FO_RENAME 0x0004 文件重命名

fFlags可以为:
   FOF_MULTIDESTFILES 0x0001 //pTo 指定了多个目标文件,而不是单个目录
   FOF_CONFIRMMOUSE 0x0002
   FOF_SILENT 0x00044 // 不显示一个进度对话框
    FOF_RENAMEONCOLLISION 0x0008 // 碰到有抵触的名字时,自动分配前缀
   FOF_NOCONFIRMATION 0x0010 // 不对用户显示提示
   FOF_WANTMAPPINGHANDLE 0x0020 // 填充hNameMappings字段,必须使用SHFreeNameMappings释放
   FOF_ALLOWUNDO 0x0040 // 允许撤销
   FOF_FILESONLY 0x0080 // 使用 *.* 时, 只对文件操作
   FOF_SIMPLEPROGRESS 0x0100 // 简单进度条,意味者不显示文件名。
   FOF_NOCONFIRMMKDIR 0x0200 // 建新目录时不需要用户确定
   FOF_NOERRORUI 0x0400 // 不显示出错用户界面
   FOF_NOCOPYSECURITYATTRIBS 0x0800 // 不复制 NT 文件的安全属性
   FOF_NORECURSION 0x1000 // 不递归目录
返回值:
   函数成功返回0,失败返回非0。

我们常先自定义一个函数或者过程来避免对TSHFIleOpStruct的繁杂的赋值,自定义过程如下:

procedure MoveFileToDustBin(FileName:String);
var
T:TSHFileOpStruct;
begin
FillChar(T,SizeOf(TSHFileOpStruct),#0);
with T do
begin
    Wnd:=0;
    wFunc:=FO_Delete;
    pFrom:=PChar(FileName);
    fFlags:=FOF_ALLOWUNDO;
end;

SHFileOperation(T);
end;

要使用时,调用该过程即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值