SHFileOperation的使用方法

SHFileOperation的使用方法,第1张

但是你一定要看delphi提供的帮助,那是最权威的解释了.

wjiachun已经说明了函数用法,就是遵照shfileopstruct结构定义的参数去写就行

polygon说的也很好,你一定要注意如果对多文件进行 *** 作,文件之间要用#0隔开,

最后一个文件要用#0#0结束,切记.

使用下面的函数即可,此函数使用了SHFileOperation API函数。代码如下:

Function Copy_Dir(SourceDir,DestDir:StringnLx:Integer):Boolean

  Var

    Opstruc: TshFileOpStruct

    frombuf,tobuf: Array[0..128] of Char

  begin

    FillChar(frombuf,Sizeof(frombuf),0)

    FillChar(tobuf,Sizeof(tobuf),0)

    StrPcopy(frombuf,SourceDir)

    Case nLx of

         1:

           StrPcopy(tobuf,DestDir)

    end

    With Opstruc Do

    Begin

         Wnd:=0

         Case nLx of

             1: wFunc:=FO_COPY

             2: wFunc:=FO_DELETE

             Else wFunc:=FO_COPY

         end

         pFrom:=@frombuf

         pTo:=@tobuf

         fFlags:=FOF_NOCONFIRMATION

         fAnyOperationsAborted:=False

         hNameMappings:=Nil

         lpszProgressTitle:=Nil

    end

    try

         ShFileOperation(OpStruc)

         Result:=True

    except

         Result:=False

    end

  end

需要引用单元uses  shellapi

测试代码:

Copy_Dir('c:\aa','d:\',1 ) 

SHFileOperation函数说明

函数功能描述:文件 *** 作,与 Shell 的动作相同.

函数原型:

#include<shellapi.h>

WINSHELLAPI int WINAPI SHFileOperation(LPSHFILEOPSTRUCT

lpFileOp)

参数:

typedef struct _SHFILEOPSTRUCT

{

       

HWND           

hwnd   //父窗口句柄

       

UINT           

wFunc  //要执行的动作

       

LPCTSTR        

pFrom 

//源文件路径,可以是多个文件

       

LPCTSTR        

pTo   

//目标路径,可以是路径或文件名

       

FILEOP_FLAGS   

fFlags//标志,附加选项

       

BOOL           

fAnyOperationsAborted//是否可被中断

       

LPVOID         

hNameMappings        

//文件映射名字,可在其它 Shell 函数中使用

       

LPCTSTR        

lpszProgressTitle// 只在 FOF_SIMPLEPROGRESS

时,指定对话框的标题。

} SHFILEOPSTRUCT, FAR *LPSHFILEOPSTRUCT

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 。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/11737268.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存