Как программно удалить каталог со всеми файлами и подкаталогами

Для этой цели хорошо подходит функция SHFileOperation. Тип операции wFunc необходимо установить в FO_DELETE. Обычный режим работы функции предусматривает вывод диалога отображения протекания файловой операции (прогресс-диалога) и получение подтверждения от пользователя на выполнение операции. При необходимодимости подавить подобные запросы необходимо установить в поле fFlags флаг FOF_NOCONFIRMATION. Флаг FOF_SILENT подавляет вывод прогресс-диалога.

#include <shellapi.h>
#pragma comment(lib,"shell32")
 
int res;
SHFILEOPSTRUCT fo;
 
ZeroMemory(&fo, sizeof(fo));
fo.hwnd   = hwndOwner;  // хэндл окна-владельца прогресс-диалога
fo.pFrom  = pszFullPath;
fo.wFunc  = FO_DELETE;
fo.fFlags = FOF_NOCONFIRMATION;
res = SHFileOperation(&fo);

 

ПРИМЕЧАНИЕ
Иногда возникает необходимость произвести удаление файлов в "Корзину". Для этого нужно установить флаг FOF_ALLOWUNDO, при этом нужно помнить, что для правильной работы в этом случае поле pFrom должно содержать указатель на полный путь к каталогу (или файлу).

 
« Предыдущая статья   Следующая статья »