VC移動(dòng),復(fù)制,刪除文件(SHFileOperation)_第1頁(yè)
VC移動(dòng),復(fù)制,刪除文件(SHFileOperation)_第2頁(yè)
VC移動(dòng),復(fù)制,刪除文件(SHFileOperation)_第3頁(yè)
VC移動(dòng),復(fù)制,刪除文件(SHFileOperation)_第4頁(yè)
VC移動(dòng),復(fù)制,刪除文件(SHFileOperation)_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余10頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、的彩宗教網(wǎng)-3HLPi匚口”找家教,到陽(yáng)光陽(yáng)光家教網(wǎng)全國(guó)最大家教平臺(tái)VC 移動(dòng)復(fù)制,刪除文件(SHFileOperation)(2009-10-0514:14:34)轉(zhuǎn)載標(biāo)簽:分類(lèi):技術(shù)網(wǎng)摘it(轉(zhuǎn)載于:http:/ 1 pFrompFrom 和 pTopTo 最好以0000 結(jié)尾(把存放路徑的字符串初始化為 0),0),不然有可能會(huì)出錯(cuò),中間的每一個(gè)路徑用00 隔開(kāi)2 2pFropFrom m所指向的文彳或文件夾何以多個(gè)) )會(huì)被復(fù)制或移動(dòng)到pTpTo o所指向的文件夾下面(假如文件夾不存在會(huì)詢(xún)問(wèn)是否創(chuàng)建,當(dāng)然你也可以選擇直接創(chuàng)建)參數(shù)詳解:Typedefstruct_ShFILEOPSTR

2、UCTHWNDhWnd;/消息發(fā)送的窗口句柄;UINTwFunc;/操作類(lèi)型LPCSTRpFrom;/源文件及路徑LPCSTRpTo;/目標(biāo)文件及路徑FILEOP_FLAGSfFlags;/操作與確認(rèn)標(biāo)志BOOLfAnyOperationsAborted;/操作選擇位dr覦翳家教網(wǎng)7LK,。.”“找家泡到阻光陽(yáng)光家教網(wǎng)全國(guó)最大燹教干臺(tái)LPVOIDhNameMappings;/文件映射LPCSTRIpszProgressTitle;/文件操作進(jìn)度窗口標(biāo)題SHFILEOPSTRUCT,FAR*LPSHFILEOPSTRUCT;在這個(gè)結(jié)構(gòu)中,hWnd是指向發(fā)送消息的窗口句柄,pFrom與pTo是進(jìn)行

3、文件操作的源文件名和目標(biāo)文件名,它包含文件的路徑,對(duì)應(yīng)單個(gè)文件的路徑字符串,或?qū)τ诙鄠€(gè)文件,必須以NULL作為字符串的結(jié)尾或文件路徑名之間的間隔,否則在程序運(yùn)行的時(shí)候會(huì)發(fā)生錯(cuò)誤。另外,pFrom和pTo都支持通配符*和?,這大大方便了開(kāi)發(fā)人員的使用。例如,源文件或目錄有兩個(gè),則應(yīng)是:charpFrom尸d:Test10d:Text.txt0,它表示對(duì)要D:盤(pán)Test目錄下的所有文件和D:盤(pán)上的Text.txt文件進(jìn)行操作。字符串中的是C語(yǔ)言中的的轉(zhuǎn)義符,0則是NULLowFunc是結(jié)構(gòu)中的一個(gè)非常重要的成員,它代表著函數(shù)將要進(jìn)行的操作類(lèi)型,它的取值為如下:FO_COPY:拷貝文件pFrom到p

4、To的指定位置。FO_RENAME:將pFrom的文件名更名為pTo的文件名。FO_MOVE:將pFrom的文件移動(dòng)到pTo的地方。FO_DELETE:刪除pFrom指定的文件。使用該函數(shù)進(jìn)行文件拷貝、移動(dòng)或刪除時(shí),如果需要的時(shí)間很長(zhǎng),則程序會(huì)自動(dòng)在進(jìn)行的過(guò)程中出現(xiàn)一個(gè)無(wú)模式的對(duì)話(huà)框(Windows操作系統(tǒng)提供的文件操作對(duì)話(huà)框),用來(lái)顯示執(zhí)行的進(jìn)度和執(zhí)行的時(shí)間,以及正在拷貝、移動(dòng)或刪除的文件名,此時(shí)結(jié)構(gòu)中的成員IpszProgressTitle顯示此對(duì)話(huà)框的標(biāo)題。fFlags是在進(jìn)行文件操作時(shí)的過(guò)程和狀態(tài)控制標(biāo)識(shí)。它主要有如下一些標(biāo)識(shí),也可以是其組合:FOF_FILESONLY:執(zhí)行通配符,只

5、執(zhí)行文件;FOF_ALLOWUNDO:保存UNDO信息,以便在回收站中恢復(fù)文件;河龍家教網(wǎng)kJrWTTPs/WlillUJ.yGJJ.CnM/FOF_NOCONFIRMATION:在出現(xiàn)目標(biāo)文件已存在的時(shí)候,如果不設(shè)置此項(xiàng),則它會(huì)出現(xiàn)確認(rèn)是否覆蓋的對(duì)話(huà)框,設(shè)置此項(xiàng)則自動(dòng)確認(rèn),進(jìn)行覆蓋,不出現(xiàn)對(duì)話(huà)框。FOF_NOERRORUI:設(shè)置此項(xiàng)后, 當(dāng)文件處理過(guò)程中出現(xiàn)錯(cuò)誤時(shí), 不出現(xiàn)錯(cuò)誤提示,否則會(huì)進(jìn)行錯(cuò)誤提示。FOF_RENAMEONCOLLISION:當(dāng)已存在文件名時(shí),對(duì)其進(jìn)行更換文提示。FOF_SILENT:不顯示進(jìn)度對(duì)話(huà)框。FOF_WANTMAPPINGHANDLE:要求SHFileOpera

6、tion()函數(shù)返回正處于操作狀態(tài)的實(shí)際文件列表,文件列表名柄保存在hNameMappings成員中。SHFILEOPSTRUCT結(jié)構(gòu)還包含一個(gè)SHNAMEMAPPING結(jié)構(gòu)的數(shù)組,此數(shù)組保存由SHELL計(jì)算的每個(gè)處于操作狀態(tài)的文件的新舊路徑。在使用該函數(shù)刪除文件時(shí)必須設(shè)置SHFILEOPSTRUCT結(jié)構(gòu)中的神秘FOF_ALLOWUNDO標(biāo)志,這樣才能將待刪除的文件拷到RecycleBin,從而使用戶(hù)可以撤銷(xiāo)刪除操作。需要注意的是,如果pFrom設(shè)置為某個(gè)文件名,用FO_DELETE標(biāo)志刪除這個(gè)文件并不會(huì)將它移到RecycleBin,甚至設(shè)置FOF_ALLOWUNDO標(biāo)志也不行,在這里你必須使

7、用全路徑名,這樣SHFileOperation才會(huì)將刪除的文件移到RecycleBin。轉(zhuǎn)自http:/ .wFunc/對(duì)pFrompTo要執(zhí)行的操作2 .fFlags影響對(duì)wFunx的操作3 .hNameMappings有系統(tǒng)填充,和你也可以填充4.lpszProgressTitlepFrompTo在結(jié)尾是兩個(gè)00通常用一個(gè)0,這樣會(huì)失敗的!當(dāng)FOF_MULTIDESTFILESszPFromlstrlen(szPFrom)+1=0szPFrom:必須先確定他所指定的文件存在!可以是單個(gè)文件名,*.*,或包含統(tǒng)配符的文件名注意必須是文件名,不是文件所在的文件夾名szSource:可以是一個(gè)目

8、錄,如果不是目錄,但又有多個(gè)文件,那么必須和szPFrom的每一個(gè)文件對(duì)應(yīng),還要指定FOF_MULTIDETFILES標(biāo)志SourceandTarget多個(gè)文件-一個(gè)文件夾許多單獨(dú)的文件-一個(gè)文件夾單獨(dú)文件-單獨(dú)文件許多單獨(dú)的文件-許多單獨(dú)的文件找家教,到陽(yáng)光陽(yáng)光家教網(wǎng)全國(guó)最大家教平臺(tái)-缶覦老家教網(wǎng)/JH”找家遇到阻光陽(yáng)光家教網(wǎng)全國(guó)最大駕竽臺(tái)單獨(dú)文件:知道名字的文件多個(gè)文件:帶有統(tǒng)配符的文件注意到source中沒(méi)有對(duì)文件夾的操作!SHFileOperation能操作網(wǎng)絡(luò)上的文件如果你想將本地文件復(fù)制到9那么只要在9上共享123目錄然后將pTo設(shè)置為1

9、9123就可以了但不要設(shè)置為9對(duì)hNameMappings操作是Undocumented!如果沒(méi)有指定hNameMappings那么hNameMappings一直是NULL只有當(dāng)某種操作(copy,move,rename)引起了文件名沖突了,hNameMappings才不是NULL!當(dāng)?shù)谝淮蝐opy某些文件到空目錄中時(shí)hNameMappings一定是NULL所以hNameMappings只是內(nèi)存中的一塊地區(qū)用來(lái)讓Explorer.exe保存被重命名的文件,以避免文件名沖突!上面知道了如何才能使hNameMappings有效現(xiàn)在如何使用hNameMapp

10、ings,及其所指的結(jié)構(gòu)大?。坎⑷〉眠@個(gè)內(nèi)存塊的內(nèi)容呢?hNameMappings是簡(jiǎn)單LPVOID無(wú)法使用100P要使用hNameMappings,必須定義一個(gè)結(jié)構(gòu)體structHANDLETOMAPPINGSUINTuNumberOfMappings;/numberofmappingsinarrayLPSHNAMEMAPPINGlpSHNameMapping;/pointertoarrayofmappings;河龍家教網(wǎng)kJrWTTPs/WlillUJ.yGJJ.CnM/但是可以寫(xiě)一個(gè)EnumeratefunctiontoenumerateIpSHNameMapping指向的內(nèi)存塊,并且是

11、讓W(xué)indow自己調(diào)用我的,不是我主動(dòng)調(diào)用象Loop相關(guān)聯(lián)接:Q154123:FileNameMappingwithWindowsNT4.0ShellQ133326:SHFILEOPSTRUCTpFromandpToFieldsIncorrectQ142066:PRB:SHGetNameMappingPtr()andSHGetNameMappingCount()ManipulatingFileswiththeSHFileOperationFunctioninVisualBasic4.0FOF_SILENT/不產(chǎn)生正在復(fù)制的對(duì)話(huà)框FOF_NOCONFIRMMKDIR如果目的目錄不存在,就默認(rèn)創(chuàng)建

12、FOF_NOCONFIRMATION/不出現(xiàn)確認(rèn)文件替換對(duì)話(huà)框(ConfirmationDialog)(默認(rèn)替換原來(lái)的文i件)FOF_NOERRORUI/不出現(xiàn)錯(cuò)誤對(duì)話(huà)框最好不要同時(shí)使用FOF_NOERRORUI,FOF_NOCONFIRMMKDIR因?yàn)镕OF_NOCONFIRMMKDIR屏蔽了missingdirectoryError但FOF_NOERROR又屏蔽了missingdirectoryError,那么在同時(shí)使用FOF_NOERRORUI,FOF_NOCONFIRMMKDIR時(shí)也阻止了新目錄安靜(沒(méi)有用戶(hù)確認(rèn)要產(chǎn)生新目錄的對(duì)話(huà)框)的產(chǎn)生!那么如何同時(shí)使用FOF_NOERRORUI,

13、FOF_NOCONFIRMMKDIR?就必須先確認(rèn)pTo所指定的目錄存在即可BOOLMakeSureDiretoryPathExists(LPCSTRDirPath);使用它要包含imagehlp.h和imagehlp.lib如何判斷同時(shí)存在FOF_NOERRORUI,FOF_NOCONFIRMMKDIR因此本人注釋?zhuān)喝绻霈F(xiàn)彈出無(wú)法刪除文件無(wú)法:讀取源文件或磁盤(pán)文找家教,到陽(yáng)光陽(yáng)光家教網(wǎng)全國(guó)最大家教平臺(tái)-dr麴*家教網(wǎng)/3HTTP六:二匚口山找家教,到陽(yáng)光陽(yáng)光家教網(wǎng)全國(guó)最大家教平臺(tái)可:FOF_NOCONFIRMATION|FOF_NOCONFIRMMKDIR|FOF_NOERRORUIFOF

14、_RENAMEONCOLLISION有重復(fù)文件時(shí)自動(dòng)重命名能產(chǎn)生對(duì)話(huà)框的標(biāo)志:FOF_SILENT/progressdialogFOF_RENAMEONCOLLISION/replacedialogFOF_NOCONFIRMATION/confirmationdialogFOF_NOCONFIRMMKDIR/asksforyourpermissiontocreateanewfolderFOF_NOERRORUI/errormessageFOF_ALLOWUNDO/將文件放入回收站,否則直接刪除,一般這個(gè)最好做默認(rèn)/百度收索到:1SHFILEOPSTRUCT解與所有僅使用數(shù)據(jù)結(jié)構(gòu)作為輸入?yún)?shù)的函

15、數(shù)一樣,SHFileOperation()函數(shù)是一個(gè)相當(dāng)靈活的例程。通過(guò)以適當(dāng)?shù)姆绞浇M合各種標(biāo)志,和使用(或不使用)各個(gè)SHFILEOPSTRU豺構(gòu)的成員,它可以執(zhí)行許多操作。下面就讓我們來(lái)看一看這個(gè)結(jié)構(gòu)中每一個(gè)成員所起的的作用:Hwnd、陽(yáng)之家教網(wǎng)由這個(gè)函數(shù)生成的所有對(duì)話(huà)框的父窗口HandleowFunc表示要執(zhí)行的操作pFrom含有源文件名的緩沖pTo含有目標(biāo)文件名的緩沖(不考慮刪除的情況)fFlags能夠影響操作的標(biāo)志fAnyOperationsAborted包含TRU城FALSE勺返回值。它依賴(lài)于是否在操作完成之前用戶(hù)取消了操作。通過(guò)檢測(cè)這個(gè)成員,你就可以確定操作是正常完成了還是被手動(dòng)

16、中斷了。hNameMappings資料描述它為包含SHNAMEMAPPING數(shù)組的文件名映射對(duì)象的Handle。lpszProgressTitle一個(gè)在一定情況下用于顯示對(duì)話(huà)框標(biāo)題的字符串。抑制的對(duì)話(huà)框找家教,到陽(yáng)光陽(yáng)光家教網(wǎng)全國(guó)最大家教平臺(tái)相關(guān)性與優(yōu)先級(jí)FOF_MULTIDESTFILESNoneNoneFOF_FILESONLYNoneNoneFOF_SILENT如果設(shè)置,進(jìn)度對(duì)話(huà)框不顯示FOF_SIMPLEPROGRESSNone為FOF_SILEN標(biāo)志所抑制FOF_RENAMEONCOLLISION如果設(shè)置了這個(gè)標(biāo)志,當(dāng)被移動(dòng)或拷貝的文件與已存在文件同名時(shí)置換對(duì)話(huà)框不會(huì)出現(xiàn)。名字沖突時(shí)

17、,如果FOF_NOCONFIRMAT檢N設(shè)置,則操作繼續(xù)。如果二者都設(shè)置了, 則它優(yōu)先于FOF_NOCONFIRMATION即, 文件以給定的新名字復(fù)制,而不是覆蓋。FOF_NOCONFIRMATION優(yōu)先于FOF_SIMPLEPROGR如果設(shè)置,確認(rèn)對(duì)話(huà)框在任何情況下都不出現(xiàn)名字沖突時(shí),引起文件覆蓋,除非設(shè)置了FOF_RENAMEONCOLLISN。FOF_NOCONFIRMMKDIR抑制請(qǐng)求建立新文件夾的對(duì)話(huà)框缺省目錄作為嚴(yán)重錯(cuò)誤產(chǎn)生一個(gè)錯(cuò)誤消息框。建立目錄的確認(rèn)對(duì)話(huà)框作為錯(cuò)誤消息框是否顯示依賴(lài)于FOF_NOERRORU設(shè)置。FOF_NOERRORUI抑制所有錯(cuò)誤消息框。優(yōu)先于前一個(gè)標(biāo)志。

18、如果設(shè)置,則,缺省目錄引起不被處理的異常,并且返回錯(cuò)誤碼。FOF_SILENT0 x0004這個(gè)操作不回饋給用戶(hù),就是說(shuō),不顯示進(jìn)度對(duì)話(huà)框。相關(guān)的消息框仍然顯示。FOF_NOCONFIRMATION0 x0010這個(gè)標(biāo)志使函數(shù)對(duì)任何遇到的消息框都自動(dòng)回答Yes。匐龍家教網(wǎng)HT找家教,到陽(yáng)光陽(yáng)光家教網(wǎng)全國(guó)最大家教平臺(tái)FOF_ALLOWUNDO0 x0040如果設(shè)置,這個(gè)標(biāo)志強(qiáng)迫函數(shù)移動(dòng)被刪除的文件到回收站中。否則,文件將被物理地從磁盤(pán)上刪除。FOF_FILESONLY0 x0080設(shè)置這個(gè)標(biāo)志導(dǎo)致函數(shù)僅僅刪除文件,跳過(guò)目錄項(xiàng)。它僅僅應(yīng)用于指定通配符的情況。FOF_SIMPLEPROGRESS0 x0100這導(dǎo)致簡(jiǎn)化用戶(hù)界面。使之只有動(dòng)畫(huà)而不報(bào)告被刪除的文件名。代之的是顯示lpszProgressTitle成員中指定的文字。FOF_NOERRORUI0 x0400如果設(shè)置了這個(gè)標(biāo)志,任何發(fā)生的錯(cuò)誤都不能使消息框顯示,而是程序中返回錯(cuò)誤碼。FOF_SIMPLEPROGREJSFOF_SILE

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論