SHFileOperation

  1. SHFileOperation  
  2.   
  3.   
  4.   
  5. 函数功能描述:文件操作,与 Shell 的动作相同.  
  6.  
  7. 函数原型:  
  8.  
  9. #include<shellapi.h>  
  10.   
  11. WINSHELLAPI int WINAPI SHFileOperation(LPSHFILEOPSTRUCT lpFileOp);  
  12.   
  13.   
  14.   
  15. 参数:  
  16.   
  17. typedef struct _SHFILEOPSTRUCT  
  18.   
  19. {  
  20.   
  21.         HWND            hwnd;   //父窗口句柄  
  22.   
  23.         UINT            wFunc; //要执行的动作  
  24.   
  25.         LPCTSTR         pFrom; //源文件路径,可以是多个文件  
  26.   
  27.         LPCTSTR         pTo;    //目标路径,可以是路径或文件名  
  28.   
  29.         FILEOP_FLAGS    fFlags; //标志,附加选项  
  30.   
  31.         BOOL            fAnyOperationsAborted; //是否可被中断  
  32.   
  33.         LPVOID          hNameMappings;         //文件映射名字,可在其它 Shell 函数中使用  
  34.   
  35.         LPCTSTR         lpszProgressTitle; // 只在 FOF_SIMPLEPROGRESS 时,指定对话框的标题。  
  36.   
  37. } SHFILEOPSTRUCT, FAR *LPSHFILEOPSTRUCT;  

  38. wFunc 可以为:  
  39.   
  40. /FO_MOVE          0x0001 移动文件  
  41.   
  42. FO_COPY           0x0002 复制文件  
  43.   
  44. FO_DELETE         0x0003 删除文件,只使用 pFrom  
  45.   
  46. FO_RENAME         0x0004 文件重命名  
  47.   
  48.   
  49.   
  50. fFlags可以为:  
  51.   
  52. FOF_MULTIDESTFILES         0x0001 //pTo 指定了多个目标文件,而不是单个目录  
  53.   
  54. FOF_CONFIRMMOUSE           0x0002  
  55.   
  56. FOF_SILENT                 0x00044 // 不显示一个进度对话框  
  57.   
  58. FOF_RENAMEONCOLLISION      0x0008 // 碰到有抵触的名字时,自动分配前缀  
  59.   
  60. FOF_NOCONFIRMATION         0x0010 // 不对用户显示提示  
  61.   
  62. FOF_WANTMAPPINGHANDLE      0x0020 // 填充 hNameMappings 字段,必须使用 SHFreeNameMappings 释放  
  63.   
  64. FOF_ALLOWUNDO              0x0040 // 允许撤销  
  65.   
  66. FOF_FILESONLY              0x0080 // 使用 *.* 时, 只对文件操作  
  67.   
  68. FOF_SIMPLEPROGRESS         0x0100 // 简单进度条,意味者不显示文件名。  
  69.   
  70. FOF_NOCONFIRMMKDIR         0x0200 // 建新目录时不需要用户确定  
  71.   
  72. FOF_NOERRORUI              0x0400 // 不显示出错用户界面  
  73.   
  74. FOF_NOCOPYSECURITYATTRIBS 0x0800 // 不复制 NT 文件的安全属性  
  75.   
  76. FOF_NORECURSION            0x1000 // 不递归目录  
  77.   
  78.   
  79.   
  80. 返回值:  
  81.   
  82. 函数成功返回 0 ,失败返回非 0 。  
  83.   
  84.   
  85.   
  86.   
  87.   
  88. 例子:  
  89.   
  90. 1. 将 C:\Test.txt 拷贝到 D:\  
  91.   
  92.   
  93.   
  94.    SHFILEOPSTRUCT lpsh;  
  95.   
  96.    ZeroMemory(&lpsh,sizeof(lpsh));  
  97.   
  98.    lpsh.hwnd= HWND_DESKTOP;  
  99.   
  100.    lpsh.fFlags=FOF_NOCONFIRMATION|FOF_SIMPLEPROGRESS ;  
  101.   
  102.    lpsh.wFunc=FO_COPY; // FO_MOVE 则是移动  
  103.   
  104.    lpsh.pFrom= "C:\Test.txt";    
  105.   
  106.    lpsh.pTo = "D:\"  
  107.   
  108.    if( 0 != SHFileOperation(&lpsh))  
  109.   
  110.    {  
  111.   
  112.       AfxMessageBox("复制文件出错,请检查");  
  113.   
  114.       return ;  
  115.   
  116.    }  
  117.   
  118.   
  119.   
  120. 2. 删除 D:\Test.txt  
  121.   
  122.    SHFILEOPSTRUCT lpsh;  
  123.   
  124.    ZeroMemory(&lpsh,sizeof(lpsh));  
  125.   
  126.    lpsh.hwnd= HWND_DESKTOP;  
  127.   
  128.    lpsh.fFlags=FOF_NOCONFIRMATION|FOF_SIMPLEPROGRESS ;  
  129.   
  130.    lpsh.wFunc=FO_DELETE;  
  131.   
  132.    lpsh.pFrom= "D:\Test.txt";    
  133.   
  134.    if( 0 != SHFileOperation(&lpsh))  
  135.   
  136.    {  
  137.   
  138.       AfxMessageBox("删除文件出错,请检查");  
  139.   
  140.       return ;  
  141.   
  142.    }  
  143.   
  144.   
  145.   
  146. 3.重命名  
  147.   
  148.    SHFILEOPSTRUCT lpsh;  
  149.   
  150.    ZeroMemory(&lpsh,sizeof(lpsh));  
  151.   
  152.    lpsh.hwnd= HWND_DESKTOP;  
  153.   
  154.    lpsh.fFlags=FOF_NOCONFIRMATION|FOF_SIMPLEPROGRESS ;  
  155.   
  156.    lpsh.wFunc=FO_RENAME;  
  157.   
  158.    lpsh.pFrom= "D:\Test.txt";    
  159.   
  160.    lpsh.pTo = "D:\Test2.txt";  
  161.   
  162.    if( 0 != SHFileOperation(&lpsh))  
  163.   
  164.    {  
  165.   
  166.       AfxMessageBox("重命名文件出错!");  
  167.   
  168.       return ;  
  169.   
  170.    }  
  171.   
  172.   
  173.   
  174.   
  175.   

  1.   
  2. SHFILEOPSTRUCT Op;  
  3.   
  4. ZeroMemory(&Op, sizeof(Op));  
  5.   
  6.   
  7.   
  8. TCHAR ToBuf[MAX_PATH];  
  9.   
  10. TCHAR FromBuf[MAX_PATH];  
  11.   
  12. ZeroMemory(ToBuf, sizeof(ToBuf));  
  13.   
  14. ZeroMemory(FromBuf, sizeof(FromBuf));  
  15.   
  16. lstrcpy(FromBuf, strDeleteFile);  
  17.   
  18.   
  19.   
  20. Op.hwnd = NULL;  
  21.   
  22. Op.pFrom = FromBuf;  
  23.   
  24. Op.pTo = ToBuf;  
  25.   
  26. Op.fFlags = FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR | FOF_NOERRORUI;  
  27.   
  28. Op.fAnyOperationsAborted = FALSE;  
  29.   
  30. Op.hNameMappings = NULL;  
  31.   
  32. Op.lpszProgressTitle = NULL;  
  33.   
  34. Op.wFunc = FO_DELETE;  
  35.   
  36.   
  37.   
  38. SHFileOperation(&Op);  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值