Поделиться через


Обработка активации файлов в приложении Windows

Ваше приложение может зарегистрироваться в качестве обработчика по умолчанию для определенного типа файла. Классические приложения Windows и приложения универсальной платформы Windows (UWP) могут зарегистрироваться в качестве обработчика файлов по умолчанию. Если пользователь выбирает приложение в качестве обработчика по умолчанию для определенного типа файла, приложение будет активировано при запуске этого типа файла.

Рекомендуется зарегистрировать только для типа файла, если ожидается обработка всех запусков файлов для этого типа файла. Если вашему приложению нужно использовать тип файла только для внутренних нужд, вам не нужно регистрировать его в качестве обработчика по умолчанию. Если вы решили зарегистрировать приложение для типа файла, необходимо предоставить пользователю функциональность, которую ожидают при активации приложения для этого типа файла. Например, приложение для просмотра изображений может зарегистрироваться для отображения файла .jpg. Дополнительные сведения о сопоставлениях файлов см. в руководствах по типам файлов и URI.

В этих шагах показано, как зарегистрировать пользовательский тип файла .alsdk и как активировать приложение, когда пользователь запускает файл .alsdk.

Заметка

В Windows некоторые URI и расширения файлов зарезервированы для использования встроенными приложениями и операционной системой. Попытки регистрации приложения с зарезервированным универсальным кодом ресурса (URI) или расширением файла будут игнорироваться. См. Зарезервированные имена схем URI и типы файлов, чтобы получить алфавитный список схем URI, которые нельзя зарегистрировать для приложений, потому что они либо зарезервированы, либо запрещены.

Важные API

В этом разделе используются следующие API:

Шаг 1. Указание точки расширения в манифесте пакета

Приложение получает события активации только для расширений файлов, перечисленных в манифесте пакета. Вот как указать, что приложение обрабатывает файлы с расширением .alsdk.

  1. В обозревателе решений дважды щелкните package.appxmanifest, чтобы открыть конструктор манифестов. Выберите вкладку Декларации и в раскрывающемся списке Доступные декларации выберите Ассоциации типов файлов и нажмите Добавить. См. Программные идентификаторы для получения дополнительных сведений об идентификаторах, используемых в ассоциациях файлов.

    Ниже приведено краткое описание каждого из полей, которые можно заполнить в конструкторе манифестов:

Поле Описание
имя для отображения Укажите отображаемое имя группы типов файлов. Отображаемое имя используется для определения типа файла в задания программ по умолчанию на панели управления .
логотип Укажите логотип, используемый для идентификации типа файла на рабочем столе и в задать программы по умолчанию на панели управления . Если логотип не указан, используется небольшой логотип приложения.
Совет информации Укажите подсказку для сведений о группе типов файлов. Этот текст подсказки появляется при наведении указателя мыши на значок файла этого типа.
имени Выберите имя для группы типов файлов, которые имеют одинаковое отображаемое имя, логотип, подсказку сведений и флаги редактирования. Выберите имя группы, которое может оставаться неизменным в обновлениях приложения. Примечание Имя должно быть написано строчными буквами.
тип контента Укажите тип контента MIME, например image/jpeg, для определенного типа файла. Важное примечание о разрешенных типах контента: Ниже приведен алфавитный список типов контента MIME, которые нельзя ввести в манифест пакета, так как они зарезервированы или запрещены: application/force-download, application/octet-stream, application/unknown, application/x-msdownload.
типа файла Укажите тип файла, перед которым стоит точка, например, «.jpeg». Зарезервированные и запрещённые типы файлов: Смотрите зарезервированные имена схем URI и типы файлов списка типов файлов в алфавитном порядке для встроенных приложений, которые нельзя зарегистрировать в ваших UWP-приложениях, так как они являются зарезервированными или запрещёнными.
  1. Введите alsdk в качестве имени .
  2. Введите .alsdk как тип файла .
  3. Укажите "изображения\Icon.png" в качестве логотипа.
  4. Нажмите клавиши CTRL+S, чтобы сохранить изменение в package.appxmanifest.

Шаги, описанные выше, добавляют в манифест пакета элемент расширения , подобный этому. Категория windows.fileTypeAssociation указывает, что приложение обрабатывает файлы с расширением .alsdk.

      <Extensions>
        <uap:Extension Category="windows.fileTypeAssociation">
          <uap:FileTypeAssociation Name="alsdk">
            <uap:Logo>images\icon.png</uap:Logo>
            <uap:SupportedFileTypes>
              <uap:FileType>.alsdk</uap:FileType>
            </uap:SupportedFileTypes>
          </uap:FileTypeAssociation>
        </uap:Extension>
      </Extensions>

Шаг 2. Добавление соответствующих значков

Программы, которые становятся программами по умолчанию для типа файлов, имеют свои иконки, отображаемые в различных местах в системе. Например, эти значки отображаются в следующих элементах:

  • Представление элементов проводника Windows, контекстные меню и лента инструментов.
  • Панель управления программами по умолчанию
  • Средство выбора файлов
  • Результаты поиска на начальном экране

Добавьте значок размером 44x44 в проект, чтобы ваш логотип отображался в этих местах. Сопоставляйте внешний вид логотипа плитки приложения и используйте цвет фона приложения, а не прозрачный значок. Сделайте так, чтобы логотип доходил до края без отступов. Проверьте значки на белом фоне. Для получения более подробной информации о значках см. руководство по ресурсам плиток и значков и.

Шаг 3. Обработка активированного события

Обработчик событий OnFileActivated получает все события активации файлов.

protected override void OnFileActivated(FileActivatedEventArgs args)
{
       // TODO: Handle file activation
       // The number of files received is args.Files.Count
       // The name of the first file is args.Files[0].Name
}
Protected Overrides Sub OnFileActivated(ByVal args As Windows.ApplicationModel.Activation.FileActivatedEventArgs)
      ' TODO: Handle file activation
      ' The number of files received is args.Files.Size
      ' The name of the first file is args.Files(0).Name
End Sub
void App::OnFileActivated(Windows::ApplicationModel::Activation::FileActivatedEventArgs const& args)
{
    // TODO: Handle file activation.
    auto numberOfFilesReceived{ args.Files().Size() };
    auto nameOfTheFirstFile{ args.Files().GetAt(0).Name() };
}
void App::OnFileActivated(Windows::ApplicationModel::Activation::FileActivatedEventArgs^ args)
{
    // TODO: Handle file activation
    // The number of files received is args->Files->Size
    // The name of the first file is args->Files->GetAt(0)->Name
}

Заметка

При запуске с помощью контракта файлового доступа убедитесь, что кнопка "Назад" возвращает пользователя на экран, с которого было запущено приложение, а не на предыдущее содержимое приложения.

Заметка

В приложении WinUI в App.OnLaunched (или в любое время) можно вызвать (AppInstance.GetActivatedEventArgs) для получения параметров события активации и проверить их, чтобы определить способ активации приложения. Дополнительные сведения о различиях жизненного цикла между приложениями UWP и WinUI см. в разделе «Миграция функциональности жизненного цикла приложения».

Мы рекомендуем создать новый XAML Frame для каждого события активации, открывающего новую страницу. Таким образом, стек обратной навигации нового XAML фрейма не содержит предыдущего содержимого, которое могло быть в текущем окне приложения при его приостановке. Если вы решите использовать один XAML объект Frame для запуска и для контрактов файлов, перед переходом на новую страницу следует очистить журнал навигации кадра.

При запуске приложения с помощью активации файлов следует рассмотреть возможность включения пользовательского интерфейса, позволяющего пользователю вернуться на верхнюю страницу приложения.

Замечания

Полученные файлы могут поступать из ненадежного источника. Перед выполнением действий рекомендуется проверить содержимое файла.