Compartilhar via


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 anteriormente conhecido como Desktop Bridge.

Captura de tela de blocos secundários

Importante

Requer o Fall Creators Update: você deve direcionar o SDK 16299 e estar executando a compilação 16299 ou posterior para fixar blocos secundários de aplicativos de Ponte de Desktop.

Adicionar um bloco secundário do SDK do Aplicativo Windows, WPF ou aplicativo WinForms é muito semelhante a um aplicativo UWP puro. A única diferença é que você deve especificar seu identificador de 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 do 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 o WinUI 3, deverá usar um aplicativo empacotado para fixar blocos secundários. Não há etapas extras 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 a Ponte de Desktop, precisará fazer isso antes de usar qualquer API do Tempo de Execução do Windows (consulte Criando um pacote MSIX a partir 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 forneça acesso às APIs do Tempo de Execução do Windows (consulte .NET 6 e posterior: usar a opção Moniker da Estrutura de Destino). 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 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 há uma referência ao objeto Window (seja uma janela do WinUI 3, uma janela do WPF ou uma janela do 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 de 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 abril de 2018 versão 17134.81 ou posterior: você deve estar executando a compilação 17134.81 ou posterior para enviar notificações de bloco ou notificação para blocos secundários de aplicativos de Ponte de Desktop. Antes dessa atualização de manutenção .81, uma exceção de elemento 0x80070490 não encontrado ocorria ao enviar notificações de bloco ou notificação para blocos secundários de aplicativos de Ponte de Desktop.

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

Recursos