下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、的彩宗教网-3HLPi匚口”找家教,到阳光阳光家教网全国最大家教平台VC 移动复制,删除文件(SHFileOperation)(2009-10-0514:14:34)转载标签:分类:技术网摘it(转载于:http:/ 1 pFrompFrom 和 pTopTo 最好以0000 结尾(把存放路径的字符串初始化为 0),0),不然有可能会出错,中间的每一个路径用00 隔开2 2pFropFrom m所指向的文彳或文件夹何以多个) )会被复制或移动到pTpTo o所指向的文件夹下面(假如文件夹不存在会询问是否创建,当然你也可以选择直接创建)参数详解:Typedefstruct_ShFILEOPSTR
2、UCTHWNDhWnd;/消息发送的窗口句柄;UINTwFunc;/操作类型LPCSTRpFrom;/源文件及路径LPCSTRpTo;/目标文件及路径FILEOP_FLAGSfFlags;/操作与确认标志BOOLfAnyOperationsAborted;/操作选择位dr觎翳家教网7LK,。.”“找家泡到阻光阳光家教网全国最大燹教干台LPVOIDhNameMappings;/文件映射LPCSTRIpszProgressTitle;/文件操作进度窗口标题SHFILEOPSTRUCT,FAR*LPSHFILEOPSTRUCT;在这个结构中,hWnd是指向发送消息的窗口句柄,pFrom与pTo是进行
3、文件操作的源文件名和目标文件名,它包含文件的路径,对应单个文件的路径字符串,或对于多个文件,必须以NULL作为字符串的结尾或文件路径名之间的间隔,否则在程序运行的时候会发生错误。另外,pFrom和pTo都支持通配符*和?,这大大方便了开发人员的使用。例如,源文件或目录有两个,则应是:charpFrom尸d:Test10d:Text.txt0,它表示对要D:盘Test目录下的所有文件和D:盘上的Text.txt文件进行操作。字符串中的是C语言中的的转义符,0则是NULLowFunc是结构中的一个非常重要的成员,它代表着函数将要进行的操作类型,它的取值为如下:FO_COPY:拷贝文件pFrom到p
4、To的指定位置。FO_RENAME:将pFrom的文件名更名为pTo的文件名。FO_MOVE:将pFrom的文件移动到pTo的地方。FO_DELETE:删除pFrom指定的文件。使用该函数进行文件拷贝、移动或删除时,如果需要的时间很长,则程序会自动在进行的过程中出现一个无模式的对话框(Windows操作系统提供的文件操作对话框),用来显示执行的进度和执行的时间,以及正在拷贝、移动或删除的文件名,此时结构中的成员IpszProgressTitle显示此对话框的标题。fFlags是在进行文件操作时的过程和状态控制标识。它主要有如下一些标识,也可以是其组合:FOF_FILESONLY:执行通配符,只
5、执行文件;FOF_ALLOWUNDO:保存UNDO信息,以便在回收站中恢复文件;河龙家教网kJrWTTPs/WlillUJ.yGJJ.CnM/FOF_NOCONFIRMATION:在出现目标文件已存在的时候,如果不设置此项,则它会出现确认是否覆盖的对话框,设置此项则自动确认,进行覆盖,不出现对话框。FOF_NOERRORUI:设置此项后, 当文件处理过程中出现错误时, 不出现错误提示,否则会进行错误提示。FOF_RENAMEONCOLLISION:当已存在文件名时,对其进行更换文提示。FOF_SILENT:不显示进度对话框。FOF_WANTMAPPINGHANDLE:要求SHFileOpera
6、tion()函数返回正处于操作状态的实际文件列表,文件列表名柄保存在hNameMappings成员中。SHFILEOPSTRUCT结构还包含一个SHNAMEMAPPING结构的数组,此数组保存由SHELL计算的每个处于操作状态的文件的新旧路径。在使用该函数删除文件时必须设置SHFILEOPSTRUCT结构中的神秘FOF_ALLOWUNDO标志,这样才能将待删除的文件拷到RecycleBin,从而使用户可以撤销删除操作。需要注意的是,如果pFrom设置为某个文件名,用FO_DELETE标志删除这个文件并不会将它移到RecycleBin,甚至设置FOF_ALLOWUNDO标志也不行,在这里你必须使
7、用全路径名,这样SHFileOperation才会将删除的文件移到RecycleBin。转自http:/ .wFunc/对pFrompTo要执行的操作2 .fFlags影响对wFunx的操作3 .hNameMappings有系统填充,和你也可以填充4.lpszProgressTitlepFrompTo在结尾是两个00通常用一个0,这样会失败的!当FOF_MULTIDESTFILESszPFromlstrlen(szPFrom)+1=0szPFrom:必须先确定他所指定的文件存在!可以是单个文件名,*.*,或包含统配符的文件名注意必须是文件名,不是文件所在的文件夹名szSource:可以是一个目
8、录,如果不是目录,但又有多个文件,那么必须和szPFrom的每一个文件对应,还要指定FOF_MULTIDETFILES标志SourceandTarget多个文件-一个文件夹许多单独的文件-一个文件夹单独文件-单独文件许多单独的文件-许多单独的文件找家教,到阳光阳光家教网全国最大家教平台-缶觎老家教网/JH”找家遇到阻光阳光家教网全国最大驾竽台单独文件:知道名字的文件多个文件:带有统配符的文件注意到source中没有对文件夹的操作!SHFileOperation能操作网络上的文件如果你想将本地文件复制到9那么只要在9上共享123目录然后将pTo设置为1
9、9123就可以了但不要设置为9对hNameMappings操作是Undocumented!如果没有指定hNameMappings那么hNameMappings一直是NULL只有当某种操作(copy,move,rename)引起了文件名冲突了,hNameMappings才不是NULL!当第一次copy某些文件到空目录中时hNameMappings一定是NULL所以hNameMappings只是内存中的一块地区用来让Explorer.exe保存被重命名的文件,以避免文件名冲突!上面知道了如何才能使hNameMappings有效现在如何使用hNameMapp
10、ings,及其所指的结构大小?并取得这个内存块的内容呢?hNameMappings是简单LPVOID无法使用100P要使用hNameMappings,必须定义一个结构体structHANDLETOMAPPINGSUINTuNumberOfMappings;/numberofmappingsinarrayLPSHNAMEMAPPINGlpSHNameMapping;/pointertoarrayofmappings;河龙家教网kJrWTTPs/WlillUJ.yGJJ.CnM/但是可以写一个EnumeratefunctiontoenumerateIpSHNameMapping指向的内存块,并且是
11、让Window自己调用我的,不是我主动调用象Loop相关联接:Q154123:FileNameMappingwithWindowsNT4.0ShellQ133326:SHFILEOPSTRUCTpFromandpToFieldsIncorrectQ142066:PRB:SHGetNameMappingPtr()andSHGetNameMappingCount()ManipulatingFileswiththeSHFileOperationFunctioninVisualBasic4.0FOF_SILENT/不产生正在复制的对话框FOF_NOCONFIRMMKDIR如果目的目录不存在,就默认创建
12、FOF_NOCONFIRMATION/不出现确认文件替换对话框(ConfirmationDialog)(默认替换原来的文i件)FOF_NOERRORUI/不出现错误对话框最好不要同时使用FOF_NOERRORUI,FOF_NOCONFIRMMKDIR因为FOF_NOCONFIRMMKDIR屏蔽了missingdirectoryError但FOF_NOERROR又屏蔽了missingdirectoryError,那么在同时使用FOF_NOERRORUI,FOF_NOCONFIRMMKDIR时也阻止了新目录安静(没有用户确认要产生新目录的对话框)的产生!那么如何同时使用FOF_NOERRORUI,
13、FOF_NOCONFIRMMKDIR?就必须先确认pTo所指定的目录存在即可BOOLMakeSureDiretoryPathExists(LPCSTRDirPath);使用它要包含imagehlp.h和imagehlp.lib如何判断同时存在FOF_NOERRORUI,FOF_NOCONFIRMMKDIR因此本人注释:如果出现弹出无法删除文件无法:读取源文件或磁盘文找家教,到阳光阳光家教网全国最大家教平台-dr麴*家教网/3HTTP六:二匚口山找家教,到阳光阳光家教网全国最大家教平台可:FOF_NOCONFIRMATION|FOF_NOCONFIRMMKDIR|FOF_NOERRORUIFOF
14、_RENAMEONCOLLISION有重复文件时自动重命名能产生对话框的标志:FOF_SILENT/progressdialogFOF_RENAMEONCOLLISION/replacedialogFOF_NOCONFIRMATION/confirmationdialogFOF_NOCONFIRMMKDIR/asksforyourpermissiontocreateanewfolderFOF_NOERRORUI/errormessageFOF_ALLOWUNDO/将文件放入回收站,否则直接删除,一般这个最好做默认/百度收索到:1SHFILEOPSTRUCT解与所有仅使用数据结构作为输入参数的函
15、数一样,SHFileOperation()函数是一个相当灵活的例程。通过以适当的方式组合各种标志,和使用(或不使用)各个SHFILEOPSTRU豺构的成员,它可以执行许多操作。下面就让我们来看一看这个结构中每一个成员所起的的作用:Hwnd、阳之家教网由这个函数生成的所有对话框的父窗口HandleowFunc表示要执行的操作pFrom含有源文件名的缓冲pTo含有目标文件名的缓冲(不考虑删除的情况)fFlags能够影响操作的标志fAnyOperationsAborted包含TRU城FALSE勺返回值。它依赖于是否在操作完成之前用户取消了操作。通过检测这个成员,你就可以确定操作是正常完成了还是被手动
16、中断了。hNameMappings资料描述它为包含SHNAMEMAPPING数组的文件名映射对象的Handle。lpszProgressTitle一个在一定情况下用于显示对话框标题的字符串。抑制的对话框找家教,到阳光阳光家教网全国最大家教平台相关性与优先级FOF_MULTIDESTFILESNoneNoneFOF_FILESONLYNoneNoneFOF_SILENT如果设置,进度对话框不显示FOF_SIMPLEPROGRESSNone为FOF_SILEN标志所抑制FOF_RENAMEONCOLLISION如果设置了这个标志,当被移动或拷贝的文件与已存在文件同名时置换对话框不会出现。名字冲突时
17、,如果FOF_NOCONFIRMAT检N设置,则操作继续。如果二者都设置了, 则它优先于FOF_NOCONFIRMATION即, 文件以给定的新名字复制,而不是覆盖。FOF_NOCONFIRMATION优先于FOF_SIMPLEPROGR如果设置,确认对话框在任何情况下都不出现名字冲突时,引起文件覆盖,除非设置了FOF_RENAMEONCOLLISN。FOF_NOCONFIRMMKDIR抑制请求建立新文件夹的对话框缺省目录作为严重错误产生一个错误消息框。建立目录的确认对话框作为错误消息框是否显示依赖于FOF_NOERRORU设置。FOF_NOERRORUI抑制所有错误消息框。优先于前一个标志。
18、如果设置,则,缺省目录引起不被处理的异常,并且返回错误码。FOF_SILENT0 x0004这个操作不回馈给用户,就是说,不显示进度对话框。相关的消息框仍然显示。FOF_NOCONFIRMATION0 x0010这个标志使函数对任何遇到的消息框都自动回答Yes。匐龙家教网HT找家教,到阳光阳光家教网全国最大家教平台FOF_ALLOWUNDO0 x0040如果设置,这个标志强迫函数移动被删除的文件到回收站中。否则,文件将被物理地从磁盘上删除。FOF_FILESONLY0 x0080设置这个标志导致函数仅仅删除文件,跳过目录项。它仅仅应用于指定通配符的情况。FOF_SIMPLEPROGRESS0 x0100这导致简化用户界面。使之只有动画而不报告被删除的文件名。代之的是显示lpszProgressTitle成员中指定的文字。FOF_NOERRORUI0 x0400如果设置了这个标志,任何发生的错误都不能使消息框显示,而是程序中返回错误码。FOF_SIMPLEPROGREJSFOF_SILE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届河南省偃师市高级中学培优部生物高一上期末检测试题含解析
- 新疆阿克苏地区沙雅县第二中学2026届化学高二第一学期期末考试试题含解析
- 北京师范大学-香港浸会大学联合国际学院《大数据技术课程实践》2024-2025学年第一学期期末试卷
- 湖南省邵阳市邵东县第三中学2025-2026学年数学高二第一学期期末检测试题含解析
- 河南省中原名校2025年高二上化学期末经典模拟试题含解析
- 益阳医学高等专科学校《数字影像后期制作》2024-2025学年第一学期期末试卷
- 河南省名校大联考2025-2026学年高二生物第一学期期末质量检测模拟试题含解析
- 黑龙江八一农垦大学《新医疗技术与法》2024-2025学年第一学期期末试卷
- 山东省招远市第一中学2025-2026学年数学高二上期末复习检测模拟试题含解析
- 湖南人文科技学院《通信专业英语》2024-2025学年第一学期期末试卷
- 2025-2026学年人教版(2024)小学美术二年级上册《吹皱的水波》教学设计
- 房屋安全排查合同协议书
- 语文教师基本功竞赛试题汇编
- 市政管道施工地下水控制方案
- (2025年标准)出口木箱采购协议书
- 人教版(2024)七年级上册生物第一单元第一、二章综合测试卷(含答案)
- (新教材)人教版二年级上册小学数学教学计划+教学进度表
- 压力性损伤诊疗及护理
- 瑜伽馆会员投诉处理流程制度
- 2025年N1叉车司机模拟考试1000题及答案
- DB14∕T 3271-2025 疾控机构传染病实验室管理信息系统建设规范
评论
0/150
提交评论