В Имеет ли операционная система
В. Имеет ли операционная система Windows средства, упрощающие операции над группами файлов и каталогами?
Да, имеется функция SHFileOperation, которая умеет выполнять копирование, перенос, переименование или удаление файловых объектов (т.е. файлов и каталогов, в том числе и вложенных). Данная функция имеет всего один параметр - указатель на структуру, которая и определяет, какую операцию следует произвести, над чем и как. Вот эта структура.
SH STRUCT hwnd DWORD ? wFunc DWORD ? pFrom DWORD ? pTo DWORD ? fFlags DWORD ? fAnyOperationsAborted DWORD ? hNameMappings DWORD ? lpszProgressTitle DWORD ? SH ENDS
Рассмотрим значение этих полей.
hwnd - дескриптор окна, куда будет выводиться статус операции. wFunc - код операции. Может принимать следующие значения: FO_COPY, FO_DELETE, FO_MOVE, FO_RENAME. Смысл этих значений, я думаю, Вам понятен. pFrom - название файла, каталога или группы файлов или каталогов, над которыми будет производиться операция. Если несколько объектов, то имена отделяются символами с кодом 0. Можно выделять списки, которые отделяются друг от друга двумя нулевыми символами. pTo - имя или группа имен - результат операции, например копирование. fFlags - флаг, определяет характер операции. Может являться комбинацией следующих констант:
FOF_ALLOWUNDO - сохранить, если возможно, информацию для возвращения в исходное состояние. FOF_CONFIRMMOUSE - данное значение не реализовано. FOF_FILESONLY - выполнять только над файлами, если определен шаблон. FOF_MULTIDESTFILES - указывает, что pTo содержит несколько результирующих файлов или каталогов. Например, можно копировать сразу в несколько каталогов. Если pFrom состоит из нескольких файлов, то каждый файл будет копироваться в свой каталог. FOF_NOCONFIRMATION - отвечать утвердительно на все запросы. FOF_NOCONFIRMMKDIR- не подтверждать создание каталога, если это требуется. FOF_RENAMEONCOLLISION - давать файлам новые имена, если файлы с такими именами уже существуют. FOF_SILENT - не показывать окно-статус. FOF_SIMPLEPROGRESS - показывать окно-статус, но не показывать имена файлов. FOF_WANTMAPPINGHANDLE - заполнять отображаемый файл (см. ниже).
fAnyOperationsAborted - переменная, по которой после операции можно определить, была ли прервана операция (<>0) или нет (0). hNameMappings - дескриптор отображаемого в памяти файла, содержащего массив, состоящий из новых и старых имен файлов, участвующих в операции. lpszProgressTitle - указывает на строку-заголовок для диалогового окна-статуса.
Кроме описанной функции, есть еще целая группа функций, начинающихся на SH. Среди них особенно полезна функция SHGetDesktopFolder, осуществляющая вывод диалогового окна для выбора нужной папки каталога.
Содержание раздела