Compartir a través de


Anclar iconos secundarios desde aplicaciones de escritorio

Una aplicación de escritorio, como una aplicación WinUI 3 (mediante el SDK de aplicaciones de 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 Creación de un paquete MSIX desde el código). Anteriormente se conocía como Puente de escritorio.

Captura de pantalla de iconos secundarios

Importante

requiere la Actualización de Creadores de Otoño: debe tener como destino el SDK 16299 y ejecutar la compilación 16299 o posterior para anclar tiles secundarios desde aplicaciones de Desktop Bridge.

Agregar un icono secundario desde la aplicación windows App SDK, 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 Windows App SDK 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 escritorio, deberás hacerlo antes de poder usar cualquier API de Windows Runtime (consulta Compilar un paquete MSIX a partir del código).

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: Use la opción Moniker de la plataforma de destino). Esto incluye el acceso al espacio de nombres WinRT.Interop (consulte Llamar a las APIs de interoperabilidad desde una aplicación de .NET). Por ejemplo:

    <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. Inicialice un nuevo objeto de icono secundario exactamente igual que lo haría 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 winUI 3, una ventana 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 que se ancle el icono como harías en una aplicación 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 la versión 17134.81 de abril de 2018 o posterior: debe ejecutar la compilación 17134.81 o posterior para enviar notificaciones de icono o distintivo a iconos secundarios desde aplicaciones de Puente de escritorio. Antes de esta actualización de mantenimiento de la versión .81, se produciría una excepción 0x80070490 Elemento no encontrado al enviar notificaciones de icono o insignia a iconos secundarios desde aplicaciones de Desktop Bridge.

El envío de notificaciones de mosaico o distintivo es igual que en las aplicaciones de UWP. Consulte Enviar una notificación de icono local para empezar.

Recursos