簡體   English   中英

C++ Win32 API 刪除文件帶進度條

[英]C++ Win32 API Delete file with progress bar

使用 windows api,有沒有辦法刪除一個大文件(比如說 1gb+),並以某種方式監控進度? 我確定它可能,但我不知道從哪里開始..

編輯:應該更具體,我想將文件移動到回收站,並顯示一個類似於探索的進度條,盡管我可能想要控制台或其他東西中的進度條,所以我不想要一個精確的副本。

編輯 2:是的,我猜它是即時的,在我問這個問題之前應該已經測試過了。 無論如何要關閉這個問題?

使用帶有FO_DELETE函數和FOF_ALLOWUNDO標志的SHFileOperation將文件移動到回收站。 除非您還指定 FOF_SILENT,否則將自動顯示進度。

SHFILEOPSTRUCT fileop = { 0 };
fileop.hwnd = hwndMain; /* your window */
fileop.wFunc = FO_DELETE;
fileop.pFrom = szFilePathToDelete;
fileop.fFlags = FOF_ALLOWUNDO /* | FOF_NOCONFIRMATION to recycle without prompting */;
int error = SHFileOperation(&fileop);

更新:如問題編輯中所述,不會顯示單個文件的進度,但如果回收整個目錄,則會顯示進度。 這也不允許您覆蓋 UI(例如,在控制台窗口中顯示進度)。

也許您可以使用 SetEndOfFile 逐步截斷它? http://msdn.microsoft.com/en-us/library/aa365531(v=vs.85).aspx 然后可以快速完成刪除 inode(或在 Windows 領域中調用的任何內容)。

[更新]剛剛測試過; 其他人是對的。 刪除 inode(刪除)在 1gb 文件上是即時的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM