免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
函數(shù)ShFileOperation對(duì)文件的操作與注意事項(xiàng)
函數(shù)ShFileOperation對(duì)文件的操作與注意事項(xiàng)
  1. SHFileOperation   
  2.   
  3. 函數(shù)功能描述:文件操作,與 Shell 的動(dòng)作相同.   
  4. 函數(shù)原型:
  5. #include<shellapi.h>   
  6.   
  7. WINSHELLAPI int WINAPI SHFileOperation(LPSHFILEOPSTRUCT lpFileOp);   
  8.   
  9.   
  10.   
  11. 參數(shù):   
  12.   
  13. typedef struct _SHFILEOPSTRUCT   
  14.   
  15. {   
  16.   
  17.          HWND             hwnd;   //父窗口句柄   
  18.   
  19.          UINT             wFunc; //要執(zhí)行的動(dòng)作   
  20.   
  21.          LPCTSTR          pFrom; //源文件路徑,可以是多個(gè)文件   
  22.   
  23.          LPCTSTR          pTo;    //目標(biāo)路徑,可以是路徑或文件名   
  24.   
  25.          FILEOP_FLAGS     fFlags; //標(biāo)志,附加選項(xiàng)   
  26.   
  27.          BOOL             fAnyOperationsAborted; //是否可被中斷   
  28.   
  29.          LPVOID           hNameMappings;         //文件映射名字,可在其它 Shell 函數(shù)中使用   
  30.   
  31.          LPCTSTR          lpszProgressTitle; // 只在 FOF_SIMPLEPROGRESS 時(shí),指定對(duì)話框的標(biāo)題。   
  32.   
  33. } SHFILEOPSTRUCT, FAR *LPSHFILEOPSTRUCT;  
  34.   
  35. =======================   
  36.   
  37. wFunc 可以為:   
  38.   
  39. /FO_MOVE           0x0001 移動(dòng)文件   
  40.   
  41. FO_COPY            0x0002 復(fù)制文件   
  42.   
  43. FO_DELETE          0x0003 刪除文件,只使用 pFrom   
  44.   
  45. FO_RENAME          0x0004 文件重命名   
  46.   
  47.   
  48.   
  49. fFlags可以為:   
  50.   
  51. FOF_MULTIDESTFILES          0x0001 //pTo 指定了多個(gè)目標(biāo)文件,而不是單個(gè)目錄   
  52.   
  53. FOF_CONFIRMMOUSE            0x0002   
  54.   
  55. FOF_SILENT                  0x00044 // 不顯示一個(gè)進(jìn)度對(duì)話框   
  56.   
  57. FOF_RENAMEONCOLLISION       0x0008 // 碰到有抵觸的名字時(shí),自動(dòng)分配前綴   
  58.   
  59. FOF_NOCONFIRMATION          0x0010 // 不對(duì)用戶顯示提示   
  60.   
  61. FOF_WANTMAPPINGHANDLE       0x0020 // 填充 hNameMappings 字段,必須使用 SHFreeNameMappings 釋放   
  62.   
  63. FOF_ALLOWUNDO               0x0040 // 允許撤銷   
  64.   
  65. FOF_FILESONLY               0x0080 // 使用 *.* 時(shí), 只對(duì)文件操作   
  66.   
  67. FOF_SIMPLEPROGRESS          0x0100 // 簡(jiǎn)單進(jìn)度條,意味者不顯示文件名。   
  68.   
  69. FOF_NOCONFIRMMKDIR          0x0200 // 建新目錄時(shí)不需要用戶確定   
  70.   
  71. FOF_NOERRORUI               0x0400 // 不顯示出錯(cuò)用戶界面   
  72.   
  73. FOF_NOCOPYSECURITYATTRIBS 0x0800 // 不復(fù)制 NT 文件的安全屬性   
  74.   
  75. FOF_NORECURSION             0x1000 // 不遞歸目錄   
  76.   
  77.   
  78.   
  79. 返回值:   
  80.   
  81. 函數(shù)成功返回 0 ,失敗返回非 0 。   
  82.   
  83.   
  84.   
  85.   
  86.   
  87. 例子:   
  88.   
  89. 1. 將 C:\Test.txt 拷貝到 D:\   
  90.   
  91.   
  92.   
  93.     SHFILEOPSTRUCT lpsh;   
  94.   
  95.     ZeroMemory(&lpsh,sizeof(lpsh));   
  96.   
  97.     lpsh.hwnd= HWND_DESKTOP;   
  98.   
  99.     lpsh.fFlags=FOF_NOCONFIRMATION|FOF_SIMPLEPROGRESS ;   
  100.   
  101.     lpsh.wFunc=FO_COPY; // FO_MOVE 則是移動(dòng)   
  102.   
  103.     lpsh.pFrom= "C:\Test.txt";     
  104.   
  105.     lpsh.pTo = "D:\"  
  106.   
  107.    if( 0 != SHFileOperation(&lpsh))   
  108.   
  109.     {   
  110.   
  111.        AfxMessageBox("復(fù)制文件出錯(cuò),請(qǐng)檢查");   
  112.   
  113.       return ;   
  114.   
  115.     }   
  116.   
  117.   
  118.   
  119. 2. 刪除 D:\Test.txt   
  120.   
  121.     SHFILEOPSTRUCT lpsh;   
  122.   
  123.     ZeroMemory(&lpsh,sizeof(lpsh));   
  124.   
  125.     lpsh.hwnd= HWND_DESKTOP;   
  126.   
  127.     lpsh.fFlags=FOF_NOCONFIRMATION|FOF_SIMPLEPROGRESS ;   
  128.   
  129.     lpsh.wFunc=FO_DELETE;   
  130.   
  131.     lpsh.pFrom= "D:\Test.txt";     
  132.   
  133.    if( 0 != SHFileOperation(&lpsh))   
  134.   
  135.     {   
  136.   
  137.        AfxMessageBox("刪除文件出錯(cuò),請(qǐng)檢查");   
  138.   
  139.       return ;   
  140.   
  141.     }   
  142.   
  143.   
  144.   
  145. 3.重命名   
  146.   
  147.     SHFILEOPSTRUCT lpsh;   
  148.   
  149.     ZeroMemory(&lpsh,sizeof(lpsh));   
  150.   
  151.     lpsh.hwnd= HWND_DESKTOP;   
  152.   
  153.     lpsh.fFlags=FOF_NOCONFIRMATION|FOF_SIMPLEPROGRESS ;   
  154.   
  155.     lpsh.wFunc=FO_RENAME;   
  156.   
  157.     lpsh.pFrom= "D:\Test.txt";     
  158.   
  159.     lpsh.pTo = "D:\Test2.txt";   
  160.   
  161.    if( 0 != SHFileOperation(&lpsh))   
  162.   
  163.     {   
  164.   
  165.        AfxMessageBox("重命名文件出錯(cuò)!");   
  166.   
  167.       return ;   
  168.   
  169.     }   
  170.   
  171. 注意事項(xiàng)
  172. 參數(shù)pTo、pFrom必須是以 雙0 結(jié)束的,原文為:
  173. pFrom   
        
  174.     Pointer to a buffer that specifies one or more source file names. Multiple names must be null-separated. The list of names must be double null-terminated.
  175. a.如果是直接賦值:
  176. WCHAR strSrc[MAX_PATH] = _T("g:\\123");
    WCHAR strDst[MAX_PATH] = _T("g:\\456");
  177. 這樣就可以成功編譯。
  178.   
  179. b.如果pTo、pFrom從CString獲得,則:
  180. WCHAR SrcFolder[MAX_PATH],DestFolder[MAX_PATH];
  181. wcscpy_s(SrcFolder, Source);
    wcscpy_s(DestFolder,m_Path);
    SrcFolder[wcslen(SrcFolder) + 1] = 0;
    DestFolder[wcslen(DestFolder) + 1] = 0;
    (其中,Source與m_Path是在其他地方獲取的值)
  182. 造成這種差異的原因是:CString在結(jié)尾并沒有"\0",所以需要我們添加。
  183.   
  184.   
  185. 4.VB   
  186.   
  187.   
  188.   
  189. Public Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long   
  190.   
  191. Public Const FO_COPY = &H2   
  192.   
  193. Public Const FOF_ALLOWUNDO = &H40   
  194.   
  195.   
  196.   
  197. Public Sub ShellCopyFile(Source As String, Dest As String)   
  198.   
  199. Dim result As Long   
  200.   
  201. Dim fileop As SHFILEOPSTRUCT   
  202.   
  203. With fileop   
  204.   
  205.     .hwnd = 0   
  206.   
  207.     .wFunc = FO_COPY   
  208.   
  209.     .pFrom = Source & vbNullChar & vbNullChar   
  210.   
  211.     .pTo = Dest & vbNullChar & vbNullChar   
  212.   
  213.     .fFlags = FOF_ALLOWUNDO   
  214.   
  215. End With   
  216.   
  217.   
  218.   
  219. result = SHFileOperation(fileop)   
  220.   
  221.   
  222.   
  223. If result <> 0 Then   
  224.   
  225. 'Msgbox the error that occurred in the API.   
  226.   
  227.     MsgBox Err.LastDllError, vbCritical Or vbOKOnly   
  228.   
  229. Else   
  230.   
  231.     If fileop.fAnyOperationsAborted <> 0 Then   
  232.   
  233.      MsgBox "Operation Failed", vbCritical Or vbOKOnly   
  234.   
  235.     End If   
  236.   
  237. End If   
  238.   
  239. End Sub  
  1. 單開一個(gè)內(nèi)存,清空,把pForm指向這里,把內(nèi)容拷進(jìn)去   
  2.   
  3.   
  4.   
  5. SHFILEOPSTRUCT Op;   
  6.   
  7. ZeroMemory(&Op, sizeof(Op));   
  8.   
  9.   
  10.   
  11. TCHAR ToBuf[MAX_PATH];   
  12.   
  13. TCHAR FromBuf[MAX_PATH];   
  14.   
  15. ZeroMemory(ToBuf, sizeof(ToBuf));   
  16.   
  17. ZeroMemory(FromBuf, sizeof(FromBuf));   
  18.   
  19. lstrcpy(FromBuf, strDeleteFile);   
  20.   
  21.   
  22.   
  23. Op.hwnd = NULL;   
  24.   
  25. Op.pFrom = FromBuf;   
  26.   
  27. Op.pTo = ToBuf;   
  28.   
  29. Op.fFlags = FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR | FOF_NOERRORUI;   
  30.   
  31. Op.fAnyOperationsAborted = FALSE;   
  32.   
  33. Op.hNameMappings = NULL;   
  34.   
  35. Op.lpszProgressTitle = NULL;   
  36.   
  37. Op.wFunc = FO_DELETE;   
  38.   
  39.   
  40.   
  41. SHFileOperation(&Op);  
  42. ===================   
  43.   
  44. vb.net   
  45.   
  46. Public Structure SHFILEOPSTRUCT   
  47.   
  48. Dim hwnd As IntPtr   
  49.   
  50. Dim wFunc As Integer   
  51.   
  52. Dim pFrom As String   
  53.   
  54. Dim pTo As String   
  55.   
  56. Dim fFlags As Short   
  57.   
  58. Dim fAnyOperationsAborted As Integer   
  59.   
  60. Dim hNameMappings As IntPtr   
  61.   
  62. Dim lpszProgressTitle As String   
  63.   
  64. End Structure   
  65.   
  66.   
  67.   
  68. Public Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (ByRef lpFileOp As SHFILEOPSTRUCT) As Integer   
  69.   
  70.   
  71.   
  72. ======================   
  73.   
  74. vb:   
  75.   
  76. Type SHFILEOPSTRUCT   
  77.   
  78. hWnd As Long   
  79.   
  80. wFunc As Long   
  81.   
  82. pFrom As String '必須用 pFrom & vbNullChar & vbNullChar   
  83.   
  84. pTo As String '同pFrom   
  85.   
  86. fFlags As Integer   
  87.   
  88. fAnyOperationsAborted As Boolean   
  89.   
  90. hNameMappings As Long   
  91.   
  92. lpszProgressTitle As String   
  93.   
  94. End Type   
  95.   
  96. Public Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
VB 怎樣搜索并且刪除文件夾及文件夾下面的所有文件?
vc對(duì)文件夾的操作SHFileOperation()的使用【轉(zhuǎn)】
VC下的目錄文件的復(fù)制.(SHFileOperation)
VC 復(fù)制移動(dòng)刪除重命名文件文件夾
c#中使用api(shfileoperation)進(jìn)行文件操作,特別詳解了回收站相關(guān)參數(shù)
VB操作文件夾的幾個(gè)方法
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服