---- WIN SHELL API int WINAPI SHFileOperation (LPSHFILEOPSTRUCT lpFIleOp);
---- LPSHFILEOPSTRUCT結構包含有進行文件操作的各種信息,其具體的結構如下:
Typedef struct _ShFILEOPSTRUCT {
HWND hWnd; //消息窗口
UINT wFunc; //操作類型
LPCSTR pFrom; //源文件及路徑
LPCSTR pTo; //目標文件及路徑
FILEOP_FLAGS fFlags; //操作與確認標誌
BOOL fAnyOperationsAborted; //操作選擇位
LPVOID hNameMappings; //文件映射
LPCSTR lpszProgressTitle; //進度窗口標題
} SHFILEOPSTRUCT, FAR* LPSHFILEOPSTRUCT;
---- 在這個結構中,有幾個成員很重要。hWnd是指向發送消息的窗口,pFrom與pTo是進行文件操作的源文件名和目標文件名,它包含文件的路徑,對於多個文件名之間用NULL作爲間隔,並且可以支持通配符*和?。如源文件或目錄有兩個,則應是:
char pFrom[]="c://windows//command
/0c://dos//himem.sys/0"
---- 它表示對c:/windows/command目錄下的所有文件和c:/dos/himem.sys文件進行操作。'//'是C語言中的'/'的轉義符,'/0'則是NULL。wFunc 是結構中的重要成員,它指出將要進行的操作類型,是下面的操作類型之一:
---- FO_COPY: 拷貝文件pFrom到pTo 的指定位置。
---- FO_RENAME: 將pFrom的文件名更名爲pTo的文件名。
---- FO_MOVE: 將pFrom的文件移動到pTo的地方。
---- FO_DELETE: 刪除pFrom指定的文件。
---- 在進行文件拷貝、移動或刪除時,如果需要的時間很長,則會在進行的過程中出現一個無模式的對話框,可以顯示執行的進度和執行的時間,以及正拷貝移動或刪除的文件名,成員lpszProgressTitle顯示此對話框的標題。fFlags是在進行文件操作時的過程和狀態控制標識。它主要有如下一些標識,也可以是其組合。
---- FOF_FILESONLY:不執行通配符,只執行文件.
---- FOF_ALLOWUNDO:保存 UNDO信息,以便恢復.
---- FOF_NOCONFIRMATION: 在出現目標文件已存在的時候,如果不設置此項,則它會出現確認是否覆蓋的對話框,設置此項則自動確認,進行覆蓋,不出現對話框。
---- FOF_NOERRORUI: 設置此項後,當文件處理過程中出現錯誤時,不出現錯誤提示,否則會進行錯誤提示。
---- FOF_RENAMEONCOLLISION: 當已存在文件名時,對其進行更換文件名提示。
---- FOF_SILENT: 不顯示進度對話框。
---- FOF_WANTMAPPINGHANDLE: 要求SHFileOperation()函數返回正處於操作狀態的實際文件列表,文件列表名柄保存在hNameMappings成員中。SHFILEOPSTRUCT將包含一個SHNAMEMAPPING結構的數組,此數組保存由SHELL計算的每個處於操作狀態的文件的新舊路徑。
Demo:
SHFILEOPSTRUCT FileOp = {0};
FileOp.fFlags = FOF_NOCONFIRMATION; //不出現確認對話框;//FOF_ALLOWUNDO | //允許放回回收站
FileOp.pFrom = lpszPath;
FileOp.pTo = NULL; //一定要是NULL
FileOp.wFunc = FO_DELETE; //刪除操作
return SHFileOperation(&FileOp);
轉自 http://blog.csdn.net/haiou327/article/details/5717163