Fixar blocos secundários de aplicativos da área de trabalho

Um aplicativo da área de trabalho, como um aplicativo WinUI 3 (usando o SDK do Aplicativo Windows), ou um aplicativo Windows Presentation Foundation (WPF) ou Windows Forms (WinForms), pode fixar um bloco secundário usando um aplicativo empacotado (consulte Criando um pacote MSIX do seu código). Isso era conhecido anteriormente como Ponte de Desktop.

Captura de tela de blocos secundários

Importante

Requer a Fall Creators Update: você deve usar o SDK 16299 e executar o build 16299 ou posterior para marcar blocos secundários nos aplicativos de Ponte de Desktop.

Adicionar um bloco secundário de seu aplicativo SDK do Aplicativo Windows, WPF ou WinForms é muito semelhante a um aplicativo UWP puro. A única diferença é que você deve especificar o identificador da janela principal (HWND). Isso ocorre porque, ao fixar um bloco, o Windows exibe uma caixa de diálogo modal solicitando que o usuário confirme se deseja fixar o bloco. Se o aplicativo da área de trabalho não configurar o objeto SecondaryTile com a janela proprietário, o Windows não saberá onde desenhar a caixa de diálogo e a operação falhará.

Empacotar seu aplicativo

Se você estiver criando um aplicativo SDK do Aplicativo Windows com WinUI 3, deverá usar um aplicativo empacotado para fixar blocos secundários. Não há etapas adicionais necessárias para empacotar seu aplicativo se você começar com o modelo de aplicativo empacotado.

Se você estiver usando o WPF ou o WinForms e não tiver empacotado seu aplicativo com o Ponte de Desktop, precisará fazer isso antes de usar qualquer APIs de Windows Runtime (consulte Criando um pacote MSIX do seu código).

Inicializar e fixar um bloco secundário usando a interface IInitializeWithWindow

Observação

Esta seção é para WinUI 3; e para WPF/WinForms com .NET 6 ou posterior.

  1. No arquivo de projeto, defina a propriedade TargetFramework como um valor que lhe dá acesso às APIs Windows Runtime (consulte .NET 6 e posterior: use a opção Moniker do Target Framework). Isso inclui acesso ao namespace WinRT.Interop (consulte Chamar APIs de interoperabilidade de um aplicativo .NET). Por exemplo:

    <PropertyGroup>
      <!-- You can also target other versions of the Windows SDK and .NET; for example, "net6.0-windows10.0.19041.0" -->
      <TargetFramework>net6.0-windows10.0.22000.0</TargetFramework>
    </PropertyGroup>
    
  2. Inicialize um novo objeto de bloco secundário exatamente como você faria com um aplicativo UWP normal. Para saber mais sobre como criar e fixar blocos secundários, consulte Fixar blocos secundários.

    // 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. Recupere um identificador de janela e inicialize o objeto de bloco secundário com esse identificador. No código abaixo, this é uma referência ao objeto Window (seja uma janela WinUI 3, uma janela WPF ou uma janela WinForms). Para obter mais informações, consulte Recuperar um identificador de janela (HWND) e Exibir objetos de interface do usuário do WinRT que dependem do CoreWindow.

    var hWnd = WinRT.Interop.WindowNative.GetWindowHandle(this);
    WinRT.Interop.InitializeWithWindow.Initialize(tile, hWnd);
    
  4. Por fim, solicite a fixação do bloco como faria em um aplicativo UWP normal.

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

Enviar notificações de bloco

Importante

Requer a versão 17134.81 de abril de 2018 ou posterior: você deve executar a versão 17134.81 ou posterior para enviar as notificações de bloco para blocos secundários pelos aplicativos da Ponte de Desktop. Antes da atualização de serviço .81, uma exceção de 0x80070490 Elemento não encontrado não ocorreria ao enviar notificações de bloco para blocos secundários pelos aplicativos de Ponte de Desktop.

O envio de notificações de bloco ou selo é o mesmo para aplicativos UWP. Consulte Enviar uma notificação de bloco local para começar.

Recursos