SHFileOperation在拷贝、删除文件时显示运行进度 linux 查看拷贝进度

可以很容易地调用API函数CopyFile, DeleteFile,以及MoveFile来复制、删除、移动文件,这些功能相当容易使用,但是他们不显示飞行文件夹动画。下面是每一个API的例子。

//复制SOURCE.TXT到DEST.TXT,FALSE参数告诉windows如果文件DEST.TXT
//已经存在则复制失败,CopyFile的返回值是BOOL类型
if( CopyFile("C:\SOURCE.TXT","C:\DEST.TXT", FALSE) ==FALSE)
Application->MessageBox("CopyFile failed", "Error",MB_OK);

//如果移动或删除失败则返回FALSE
MoveFile("C:\SOURCE.TXT","C:\WINDOWS\TEMP\DEST.TXT");
DeleteFile("C:\SOURCE.TXT");

这些功能很容易使用,但是不幸的是他们不显示飞行文件夹动画。为了显示动画,你必须使用SHFileOperation这个API函数。下面是用SHFileOperation完成上面的操作的例子,注意复制和移动操作一定要指定目标文件夹。

//确认你包含了头文件SHELLAPI.H
//如果你好奇的话,这个文件地位置在INCLUDEWIN32目录下
#include <shellapi.h>

// 复制SOURCE.TXT到DEST.TXT;
char *From = "C:\SOURCE.TXT";
char *To = "C:\DEST.TXT";
SHFILEOPSTRUCT op;
ZeroMemory(&op, sizeof(op));
SHFileOperation在拷贝、删除文件时显示运行进度 linux 查看拷贝进度
op.hwnd = Handle; // 主窗体或应用程序的句柄,允许为NULL
op.wFunc = FO_COPY;
op.pFrom = From;
op.pTo = To;
op.fFlags= 0;
SHFileOperation( &op);

// 移动SOURCE.TXT到windows的临时目录
char *From = "C:\SOURCE.TXT";
char *To = "C:\WINDOWS\TEMP";
SHFILEOPSTRUCT op;
ZeroMemory(&op, sizeof(op));
op.hwnd = Handle;
op.wFunc = FO_MOVE;
op.pFrom = From;
op.pTo = To;
op.fFlags= 0;
SHFileOperation( &op);

//把所有的临时文件删除到回收站
char *File = "C:\windows\temp\*.TMP";
SHFILEOPSTRUCT op;
ZeroMemory(&op, sizeof(op));
op.hwnd = Handle;
op.wFunc = FO_DELETE;
op.pFrom = File;
op.fFlags= FOF_ALLOWUNDO;
SHFileOperation( &op);

// 复制根目录所有的文本文件到临时目录。
char *From = "C:\*.TXT";
char *To = "C:\WINDOWS\TEMP";
SHFILEOPSTRUCT op;
ZeroMemory(&op, sizeof(op));
op.hwnd = Handle;
op.wFunc = FO_COPY;
op.pFrom = From;
op.pTo = To;
op.fFlags= 0;
SHFileOperation( &op);


注意:
1:当你指定FO_DELETE操作的时候,如果fFlags包含FOF_ALLOWUNDO,文件将送到回收站,否则它们将被删除.

2:op结构的项目pFrom和pTo是字符指针,而不是数组.它们必须指向一个字符串,因为结构不含有任何存储空间,不能这样做:

op.pFrom = "C:\*.TXT";
op.pTo = "C:\TEMP";

3:在文件名字符串中注意到额外的终止符0(在字符串中的'')。MSDN文档表明pTo和pFrom字符串一定是双重零结束。

4:pFrom和pTo指向的内存可以包含多个字符串,字符串之间用0分隔,最后也要用双重0结束,下面是一个例子:

char *From = "C:\*.txtC:\*.logC:\*.tmp";
op.pFrom = From;

//也可以用空白分隔
char *From = "C:\*.txt"
"C:\*.log"
"C:\*.tmp";

5:当复制或者移动文件的时候,在fFlags参数中包含FOF_RENAMEONCOLLISION将阻止函数改写现存的文件,shell将建立名字叫做“复件原文件名”的复制品(资源管理器就是这样做的)。

6:你能也指定FO_RENAME作为wFunc参数.fFlags参数能包含很多其它高级方式,更多信息请参阅WIN32.HLP文件。

文章转自新浪博客:http://blog.sina.com.cn/s/blog_4de2d9c00100bncv.html

  

爱华网本文地址 » http://www.aihuau.com/a/25101010/37189.html

更多阅读

Windows 强制删除文件及文件夹命令 强制删除文件夹

Windows 强制删除文件及文件夹命令一、删除文件或目录CMD命令:rd/s/q D:app ?(强制删除文件文件夹和文件夹内所有文件)del/f/s/q D:app.txt ? ?(强制删除文件,文件名必须加文件后缀名)二、删除文件或目录BAT命令:1、新建.BAT批处理文件

删除的文件如何恢复 四种恢复技巧 linux恢复删除文件

【删除的文件如何恢复】四种恢复技巧——简介文件被删除了怎么恢复?对于种现象,经常办公的人可能会留意到,有时候不小心或者不经意之间就删除了某文件,突然某一时间发现它是重要文件时,想要找回时,却怎么也找不到了。在写这片经验之前,阳光

360浏览器医生在哪 360浏览器医生不显示 360浏览器医生进程

360浏览器医生在哪 360浏览器医生不显示——简介 在使用360浏览器时浏览器可能会出现一些问题,这时我们就可以用360浏览器医生来修复这些问题,但是有时360浏览器医生不见了。下面就和大家分享360浏览器医生不显示的解决方法。360浏览

win7怎么显示隐藏文件 如何显示隐藏文件win7

win7怎么显示隐藏文件——简介和其它windows系统一样,都有系统默认的隐藏文件,自己的文件要设置隐藏文件也不难。但在有的win7中,没有了如XP那样的菜单了,不能通过“工具”菜单来设置了。但其实在WIN7要进行这样的设置也不难。N7要进行

声明:《SHFileOperation在拷贝、删除文件时显示运行进度 linux 查看拷贝进度》为网友浪完也别回头分享!如侵犯到您的合法权益请联系我们删除