Сообщений 1    Оценка 0        Оценить  
Система Orphus

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

Автор: Игорь Вартанов

Версия текста: 1.0

Для этой цели хорошо подходит функция 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 должно содержать указатель на полный путь к каталогу (или файлу).

Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав.
    Сообщений 1    Оценка 0        Оценить