Ассемблер для Windows

В Имеет ли операционная система



В. Имеет ли операционная система 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, осуществляющая вывод диалогового окна для выбора нужной папки каталога.



      Содержание раздела