刪除檔案到資源回收筒

來源:互聯網
上載者:User

http://hi.baidu.com/magicfuzzx/item/cda3c631afc5cb009dc65e0e

一般我們可以很輕鬆的使用DelateFile函數將檔案刪除,不過這樣又一個缺陷就是刪除的檔案不經過資源回收筒,要是誤刪除了就麻煩了,並不是所有的使用者都會資料恢複。而微軟也為我們提供了Shellapi,這裡面的函數可以用來做一些特殊的操作。

 

這裡我們使用SHFileOperation函數來操作,函數定義如下:

int SHFileOperation(

 __in  LPSHFILEOPSTRUCT lpFileOp

);

不過微軟推薦在Vista和以後的平台上使用IFileOperation介面來替換這個函數。

 

這個參數很簡單就是一個SHFILEOPSTRUCT 結構體,該結構體定義如下:

typedef struct _SHFILEOPSTRUCT {

 HWND         hwnd;//用來顯示檔案操作狀態的對話方塊控制代碼

 UINT         wFunc;//要執行的動作

 LPCTSTR      pFrom;//源檔案路徑

 LPCTSTR      pTo;//目標檔案路徑

 FILEOP_FLAGS fFlags;//理解附加的操作選項,可以使用|運算子

 BOOL         fAnyOperationsAborted;//是否可中斷

 LPVOID       hNameMappings;//可以建立檔案對應

 LPCTSTR      lpszProgressTitle;//當標記為FOF_SIMPLEPROGRESS時指定視窗的名字

} SHFILEOPSTRUCT, *LPSHFILEOPSTRUCT;

參考串連:http://msdn.microsoft.com/en-us/library/bb759795%28v=vs.85%29.aspx

 

將檔案不經過確認就直接移到資源回收筒的代碼如下:

BOOL DelFileToRecycle(LPCTSTR lpSourceFile)

{

       SHFILEOPSTRUCT shFile;

       ZeroMemory(&shFile,sizeof(shFile));

       shFile.pFrom = lpSourceFile;

       shFile.wFunc = FO_DELETE;

       //靜默,保留撤銷(資源回收筒),取消警告

       shFile.fFlags =FOF_SILENT|FOF_ALLOWUNDO|FOF_NOCONFIRMATION;

       if (SHFileOperation(&shFile) != 0 )

       {

              return FALSE;

       }

       else

       {

              return TRUE;

       }

 

}

函數調用很簡單:DelFileToRecycle(_T("D:\\建立文字文件.txt"));

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.