Обработка активации файла

Важные API

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

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

Далее показано, как зарегистрировать собственный тип файлов (.alsdk) и как активировать приложение при запуске ALSDK-файла пользователем.

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

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

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

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

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

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

Шаги выше добавляют в манифест пакета элемент Extension указанного типа. Категория 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. Добавление подходящих значков

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

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

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

Шаг 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
}

Примечание

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

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

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

Комментарии

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

Полный пример

Основные понятия

Задания

Рекомендации

Ссылка