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


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

Важные 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". Зарезервированные и запрещенные типы файлов: имена схем зарезервированных URI и типы файлов для алфавитного списка типов файлов для встроенных приложений, которые нельзя зарегистрировать для приложений UWP, так как они зарезервированы или запрещены.
  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. Добавление соответствующих значков

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

  • Представление элементов проводника 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
}

Примечание.

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

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

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

Замечания

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

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

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

Задачи

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

Справочные материалы