Anclar iconos secundarios desde aplicaciones de escritorio

Una aplicación de escritorio, como una aplicación WinUI 3 (mediante el SDK de Aplicaciones para Windows), o una aplicación de Windows Presentation Foundation (WPF) o Windows Forms (WinForms), puede anclar un icono secundario mediante una aplicación empaquetada (consulte Building an MSIX package from your code). Anteriormente se conocía como Puente de dispositivo de escritorio.

Captura de pantalla de iconos secundarios

Importante

Requiere Fall Creators Update: debe tener como destino sdk 16299 y ejecutar la compilación 16299 o posterior para anclar iconos secundarios desde Puente de dispositivo de escritorio aplicaciones.

Agregar un icono secundario desde la aplicación de SDK de Aplicaciones para Windows, WPF o WinForms es muy similar a una aplicación para UWP pura. La única diferencia es que debe especificar el identificador de ventana principal (HWND). Esto se debe a que al anclar un icono, Windows muestra un cuadro de diálogo modal que pide al usuario que confirme si desea anclar el icono. Si la aplicación de escritorio no configura el objeto SecondaryTile con la ventana del propietario, Windows no sabe dónde dibujar el cuadro de diálogo y se producirá un error en la operación.

Empaquetar la aplicación

Si va a crear una aplicación de SDK de Aplicaciones para Windows con WinUI 3, debe usar una aplicación empaquetada para anclar iconos secundarios. No se requieren pasos adicionales para empaquetar la aplicación si comienza con la plantilla de aplicación empaquetada.

Si usas WPF o WinForms y no has empaquetado la aplicación con el Puente de dispositivo de escritorio, tendrás que hacerlo antes de poder usar cualquier API de Windows Runtime (consulta Building an MSIX package from your code).

Inicializar y anclar un icono secundario mediante la interfaz IInitializeWithWindow

Nota

Esta sección es para WinUI 3; y para WPF/WinForms con .NET 6 o posterior.

  1. En el archivo del proyecto, establezca la propiedad TargetFramework en un valor que le proporcione acceso a las API de Windows Runtime (consulte .NET 6 y versiones posteriores: Usar la opción Moniker de la plataforma de destino). Esto incluye el acceso al espacio de nombres WinRT.Interop (consulte Llamada a las API de interoperabilidad desde una aplicación .NET). Por ejemplo:

    <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. Inicializa un nuevo objeto de icono secundario exactamente igual que lo harías con una aplicación para UWP normal. Para más información sobre cómo crear y anclar iconos secundarios, consulte Anclar iconos secundarios.

    // 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 un identificador de ventana e inicialice el objeto de icono secundario con ese identificador. En el código siguiente, this es una referencia al objeto Window (ya sea una ventana de WinUI 3, una ventana de WPF o una ventana winForms). Para obtener más información, consulta Recuperar un identificador de ventana (HWND) y Mostrar objetos de interfaz de usuario de WinRT que dependen de CoreWindow.

    var hWnd = WinRT.Interop.WindowNative.GetWindowHandle(this);
    WinRT.Interop.InitializeWithWindow.Initialize(tile, hWnd);
    
  4. Por último, solicita anclar el icono como lo harías en una aplicación para UWP normal.

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

Envío de notificaciones de icono

Importante

Requiere abril de 2018, versión 17134.81 o posterior: debe ejecutar la compilación 17134.81 o posterior para enviar notificaciones de iconos o distintivos a iconos secundarios desde aplicaciones de Puente de dispositivo de escritorio. Antes de esta actualización de mantenimiento .81, se produciría una excepción de 0x80070490 Elemento no encontrado al enviar notificaciones de icono o distintivo a iconos secundarios de Puente de dispositivo de escritorio aplicaciones.

El envío de notificaciones de icono o distintivo es el mismo que las aplicaciones para UWP. Consulte Envío de una notificación de icono local para empezar.

Recursos