分享

用api(shell)函数实现文件复制(摘至delphi盒子)

 aaie_ 2012-06-28

Windows API函数 SHfileOperation(TSHFILEOPSTRUCT)的用法:

TSHFILEOPSTRUCT是指向SHFILEOPSTRUCT结构体的指针,在Delphi中定义如下:
Hwnd  //显示状态信息窗口的句柄,一般是你的程序中的主窗体,看你怎么用了
wFunc  //要执行的操作   取值:FO_COPY 复制
          FO_MOVE 移动
          FO_Delete 删除
pFrom  //源文件或目录
pTo    //目标文件或目录
fFlag  //控制文件操作的标志  其中你感兴趣的标志取值为:
       FOF_SILENT---不创建进度条
       FOF_SIMPLEPROGRESS----显示进度条对话框但不显示文件名
       FOF_NOCONFIRMATION-----操作过程中不显示确认信息,相当与用户选择了"Yes to all"
其他的取值可以参考ShellAPI单元的参数定义(全E文的哦 ^_^)
fAnyOperationsAborted   //Boolean类型值,操作是否放弃
hNameMappings   //文件名映射对象的句柄,很少用到,一般取nil
lpszProgressTitle  //进度条标题,注意仅在fFlag中指定了FOF_SIMPLEPROGRESS时才有效.
函数返回值为0表示操作成功

例如:
将C:\document目录的文件复制到D盘"文档"目录下

Procedure Tform1.Button1Click(Sender:TObject)
var
OpStruc:TSHFileOpStruct;   //定义OpStruc为操作结构体指针
FromBuf,ToBuf:array[0..255] of char; //定义源路径和目标路径
Begin
 StrPcopy(FromBuf,Pchar('C:\document'));
 StrPcopy(FromBuf,Pchar('D:\文档'));     //设置源路径和目标路径
 with OpStruc do        //开始定义结构体参数
  begin
   wnd:=handle;         //定义本窗体句柄,表明操作在本窗体出现
   wFunc:=FO_COPY;     //说明本次操作为复制
   pFrom:=@FromBuf;    //填源路径字符
   pTo:=@ToBuf;        //填目标路径字符
   fFlag:=FOF_NOCONFIRMATION or FOF_SIMPLEPROGRESS  //注意操作标志,如果你要让进度条出现必须有FOF_SIMPLEPROGRESS值
   fAnyOperationsAborted:=false;
   hNameMappings:=nil;
   lpszProgressTitle:=nil;
 end;
 if SHfileOperation(OpStruc)=0 then showmessage('复制完毕!');
end;
 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多