Як видалити непусту директорію

Фух. Складна видалася вночі. :-/
Власне, сабж. Може бути дуже велика кількість вкладених папок та файлів.



Є й інший спосіб:
Цей код повинен видаляти каталог у кошик, який можна очистити
Якщо кошик не потрібний, то треба змінити fFlags, тільки на що не пам'ятаю.


Ось знайшов дещо.
TSHFileOpStruct = record Wnd: HWND; wFunc: UINT; pFrom: PANsiChar; pTo: PANsiChar; fFlags: FILEOP_FLAGS;// Word; fAnyOperationsAborted: BOOL; hNameMappings: Pointer; lpszProgressTitle: PANsiChar; < only used if FOF_SIMPLEPROGRESS > end;
Структура TSHFileOpStruct використовується функцією SHFileOperation для проведення файлових операцій.
Wnd: хендл діалогового вікна, що відображає статус операції;
wFunc: тип операції: FO_COPY - копіювати файл. FO_MOVE – перемістити файл. FO_DELETE – видалити файл. FO_RENAME -перейменувати файл.
pFrom: покажчик на рядок із ім'ям вихідного файлу.
pTo: покажчик на рядок з ім'ям файлу, який копіюється, переміщується або перейменовується вихідний файл.
fFlags: прапори, які визначають параметри операції. FOF_ALLOWUNDO - зберігає інформацію про можливе скасування операції.
FOF_FILESONLY - виконує операцію лише для файлів, якщо задана маска файлів. FOF_MULTIDESTFILES - вказує, що pTo описує кілька файлів (по одному на кожен файл джерела) замість одного каталогу, куди мають бути розміщені вихідні файли. FOF_NOCONFIRMATION – відповідає "Так для всіх" на всі питання. FOF_NOCONFIRMMKDIR – не вимагає підтвердження створення нового каталогу. FOF_NO_CONNECTED_ELEMENTS - З версії 5.0. Чи не переміщаєпов'язані файли як групу. Тільки переміщує вказані файли.
FOF_NOCOPYSECURITYATTRIBS - З версії 4.71. Не копіює атрибути безпеки файлу. FOF_NOERRORUI - Не відображає інтерфейс користувача при помилці. FOF_NORECURSION - Не підтримує рекурсивні операції у підкаталогах, працює лише у локальному каталозі. FOF_RENAMEONCOLLISION - надає файлу нове ім'я при операціях копіювання, переміщення або перейменування, якщо файл із зазначеним ім'ям вже існує. FOF_SILENT - не показує прогрес бар, що відображає хід операції.
FOF_SIMPLEPROGRESS – відображає вікно прогрес бару, але не показує імен файлів. FOF_WANTMAPPINGHANDLE - Визначає використання поля hNameMappings. Хендл об'єкта має бути звільнений функцією SHFreeNameMappings.
fAnyOperationsAborted: Приймає значення True якщо операцію було перервано або False в іншому випадку.
hNameMappings: Хендл об'єкта, що містить масив структур SHNAMEMAPPING. Кожна структура SHNAMEMAPPING містить старі та нові шляхи для кожного файлу, з яким зроблено операції переміщення, копіювання або перейменування. Це поле використовується, якщо встановлено прапорець FOF_WANTMAPPINGHANDLE.
lpszProgressTitle: покажчик на рядок заголовка для вікна прогресу; використовується тільки якщо серед прапорів є FOF_SIMPLEPROGRESS