2011-12-02 3 views
1

Не могли бы вы рассказать мне, как удалить несколько файлов с помощью IFileOperation :: DeleteItems? Я не могу создать IShellItemArray с именами файлов. Спасибо!Как создать IShellItemArray из списка имен файлов

+0

Гораздо проще вызвать SHFileOperation с двойным списком файлов с нулевым завершением. –

+0

SHFileOperation обесценивается в Windows 7 –

+0

'SHFileOperation' все еще работает нормально. Если вам не нужны новые искаженные функции 'IFileOperation', тогда' SHFileOperation' проще. Я полагаю, вы знаете, что 'IFileOperation' недоступен в XP. –

ответ

2

Вы можете использовать SHCreateShellItemArrayFromIDLists

+0

Не могли бы вы показать мне, как добавлять имена файлов в качестве идентификаторов? –

+4

См. Мой комментарий к исходному вопросу. «Получить списки идентификаторов из« ILCreateFromPath ». Но если вы боретесь с элементами оболочки и списками идентификаторов, я думаю, вам следует отступить и ознакомиться с базой, прежде чем погрузиться в такие передовые вещи, как операции с файлами. Таким образом, вы узнаете такие вещи, как «когда и как я освобожу эту память?» –

1

я получил вокруг этой же проблемой. Я создал переменную (чтобы сохранить все мои IShellItems) вектора типа и преобразовал каждое имя файла (также вектор) с помощью цикла for в объект IShellItem и сохранил их в контейнере IShellItem. Затем я прохожу через этот контейнер IShellItem, снабжая каждый элемент CopyItem(). После этого цикла я вызывал PerformOpeations().

Смежные вопросы