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


Закрепление вторичных плиток из настольных приложений

Настольное приложение, такое как приложение WinUI 3 (с использованием Windows App SDK) или приложения Windows Presentation Foundation (WPF) или Windows Forms (WinForms), может закрепить вторичную плитку с помощью упакованного приложения (см. Создание пакета MSIX из вашего кода). Это было ранее известно как Мост для настольных компьютеров.

снимок экрана дополнительных плиток

Важный

Требуется обновление Fall Creators Update: необходимо установить целевой пакет SDK 16299 и запустить сборку 16299 или более поздней версии, чтобы закрепить дополнительные плитки из приложений Desktop Bridge.

Добавление вторичной плитки из приложения Windows App SDK, WPF или WinForms очень похоже на чистое приложение UWP. Единственная разница в том, что необходимо задать основной дескриптор окна (HWND). Это связано с тем, что при закреплении плитки Windows отображает модальное диалоговое окно с просьбой пользователя подтвердить, хотите ли они закрепить плитку. Если настольное приложение не настраивает объект SecondaryTile с окном владельца, Windows не знает, где отобразить диалоговое окно, и операция завершится ошибкой.

Упаковка приложения

Если вы создаете приложение Windows App SDK с помощью WinUI, необходимо использовать упакованое приложение для закрепления вторичных плиток. Если вы начинаете работу с шаблоном упаковаемого приложения, не требуется никаких дополнительных действий.

Если вы используете WPF или WinForms, и ваше приложение не упаковано с помощью Desktop Bridge, вам нужно будет сделать это, прежде чем вы сможете использовать любые API Windows Runtime (см. Создание пакета MSIX из вашего кода).

Инициализация и закрепление вторичной плитки с помощью интерфейса IInitializeWithWindow

Заметка

Этот раздел предназначен для WinUI; и для WPF/WinForms с .NET 6 или более поздних версий.

  1. В файле проекта задайте для свойства TargetFramework значение, которое обеспечивает доступ к API Windows Runtime (см. .NET 6 и более поздние версии: используйте параметр обозначения целевой платформы). Это включает доступ к пространству имен WinRT.Interop (см. Вызов межоперационных API из приложения .NET). Например:

    <PropertyGroup>
      <!-- You can also target other versions of the Windows SDK and .NET; for example, "net8.0-windows10.0.19041.0" -->
      <TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>
    </PropertyGroup>
    
  2. Инициализируйте новый объект вторичной плитки так же, как и в обычном приложении UWP. Дополнительные сведения о создании и закреплении вторичных плиток см. в статье Закрепление дополнительных плиток.

    // Initialize the tile with required arguments
    var tile = new Windows.UI.StartScreen.SecondaryTile(
        "myTileId5391",
        "Display name",
        "myActivationArgs",
        new Uri("ms-appx:///Assets/Square150x150Logo.png"),
        TileSize.Default);
    
  3. Получите дескриптор окна и инициализируйте вторичную плитку с помощью этого дескриптора. В приведенном ниже коде this является ссылкой на объект Window (будь то окно WinUI, окно WPF или окно WinForms). Дополнительные сведения см. в статьях Извлечение дескриптора окна (HWND) и Отображение объектов пользовательского интерфейса WinRT, зависящих от CoreWindow.

    var hWnd = WinRT.Interop.WindowNative.GetWindowHandle(this);
    WinRT.Interop.InitializeWithWindow.Initialize(tile, hWnd);
    
  4. Затем создайте запрос на закрепление плитки, как в обычном приложении UWP.

    // Pin the tile
    bool isPinned = await tile.RequestCreateAsync();
    
    // Here, update UI to reflect whether user can now either unpin or pin
    

Отправить уведомления о плитках

Важный

требуется версия 17134.81 или более поздней версии 2018 г.: для отправки уведомлений плитки или эмблемы на вторичные плитки из приложений Моста компьютеров необходимо запустить сборку 17134.81 или болеепоздней версии. Перед этим обновлением обслуживания .81 произошла ошибка 0x80070490 "Элемент не найден" при отправке уведомлений плитки или уведомлений индикаторов дополнительным плиткам из приложений Desktop Bridge.

Отправка уведомлений о плитке или значке такая же, как у приложений UWP. См. раздел Отправка локального уведомления плитки, чтобы начать.

Ресурсы