@zig1375

Каким образом можно удалить одновременно несколько файлов в корзину?

Доброго времени суток.
Требуется сделать удаление файлов в корзину.
Сделал все как представлено тут: www.cyberguru.ru/cpp-sources/files-folders/pomeshc...

За исключением что у меня используется unicode, и соответсвенно используется структура [B]SHFILEOPSTRUCTW [/B]и функция [B]SHFileOperationW[/B]

C одним файлом все работает шикарно:
CRecycleFile::CRecycleFile() {
   memset((SHFILEOPSTRUCTW*)this, 0, sizeof(SHFILEOPSTRUCTW));
   // fFlags |= FOF_SILENT;                // don't report progress
   // fFlags |= FOF_NOERRORUI;             // don't report errors
   // fFlags |= FOF_NOCONFIRMATION;        // don't confirm delete
}

int CRecycleFile::Recycle(wchar_t* pszPath, BOOL toTrash) {
    wchar_t buf[32768];
    wcscpy(buf, L"C:\\1\\");                   // Удаляем папку 1 с диска C
    buf[wcslen(buf) + 1]=0;

    hwnd = GetForegroundWindow();
    wFunc = FO_DELETE;                   // REQUIRED: delete operation
    pFrom = buf;                         // REQUIRED: which file(s)
    pTo   = NULL;                        // MUST be NULL

    if (!toTrash) {                      // if delete requested..
        fFlags &= ~FOF_ALLOWUNDO;        // ..don't use Recycle Bin
    } else {                             // otherwise..
        fFlags |= FOF_ALLOWUNDO;         // ..send to Recycle Bin
    }

    return SHFileOperationW(this);
}


Вопрос, как удалять несколько папок или файлов?
Вот так уже не работает:
wchar_t buf[32768];
wcscpy(buf, L"C:\\1\\\0\0C:\\2\\"); // Хочу удалить папки 1 и 2 с диска C
buf[wcslen(buf) + 1]=0;


Кто может посоветовать, как можно удалять сразу несколько папок или файлов?
По очереди вызывать не вариант. Тем более что сама винда умеет удалять пачками.
  • Вопрос задан
  • 2502 просмотра
Решения вопроса 1
@zig1375 Автор вопроса
Ответ подсказали на форуме: www.cyberforum.ru/post7046240.html
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
wcscpy(buf, L"C:\\1\\\0\0C:\\2\\"); // Хочу удалить папки 1 и 2 с диска C

Как интересно вы копируете строку с нулевыми символами внутри. Как по-вашему wcscpy и wcslen определяют конец строки?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы