Partager via


Épingler les vignettes secondaires à la barre des tâches

Remarque

Les vignettes Vie sont une fonctionnalité Windows 10 qui n’est pas prise en charge sur les versions ultérieures de Windows. Pour les nouvelles applications, nous vous recommandons de suivre les instructions actuelles pour les icônes d’application.

Tout comme l’épinglage de vignettes secondaires à Démarrer, vous pouvez épingler des vignettes secondaires à la barre des tâches, ce qui permet à vos utilisateurs d’accéder rapidement au contenu au sein de votre application.

Épinglage de la barre des tâches

Important

API Accès limité : cette API est une fonctionnalité d’accès limité. Pour utiliser cette API, contactez taskbarsecondarytile@microsoft.com.

Nécessite la mise à jour d’octobre 2018 : vous devez cibler le SDK 17763 et exécuter la build 17763 ou ultérieure pour épingler à la barre des tâches.

Assistance

Une vignette secondaire fournit un moyen cohérent et efficace pour les utilisateurs d’accéder directement à des zones spécifiques au sein d’une application. Bien qu’un utilisateur choisisse s’il faut ou non « épingler » une vignette secondaire à la barre des tâches, les zones épinglées dans une application sont déterminées par le développeur. Pour plus d’informations, consultez l’aide sur les vignettes secondaires.

1. Déterminer si l’API existe et déverrouiller l’accès limité

Les appareils plus anciens n’ont pas les API d’épinglage de la barre des tâches (si vous ciblez des versions antérieures de Windows 10). Par conséquent, vous ne devez pas afficher un bouton épingle sur ces appareils qui ne sont pas capables d’épingler.

En outre, cette fonctionnalité est verrouillée sous Accès limité. Pour accéder, contactez Microsoft. Les appels d’API à TaskbarManager.RequestPinSecondaryTileAsync, TaskbarManager.IsSecondaryTilePinnedAsync et TaskbarManager.TryUnpinSecondaryTileAsync échouent avec une exception Accès refusé. Les applications ne sont pas autorisées à utiliser cette API sans autorisation, et la définition de l’API peut changer à tout moment.

Utilisez la méthode ApiInformation.IsMethodPresent pour déterminer si les API sont présentes. Utilisez ensuite l’API LimitedAccessFeatures pour essayer de déverrouiller l’API.

if (ApiInformation.IsMethodPresent("Windows.UI.Shell.TaskbarManager", "RequestPinSecondaryTileAsync"))
{
    // API present!
    // Unlock the pin to taskbar feature
    var result = LimitedAccessFeatures.TryUnlockFeature(
        "com.microsoft.windows.secondarytilemanagement",
        "<tokenFromMicrosoft>",
        "<publisher> has registered their use of com.microsoft.windows.secondarytilemanagement with Microsoft and agrees to the terms of use.");

    // If unlock succeeded
    if ((result.Status == LimitedAccessFeatureStatus.Available) ||
        (result.Status == LimitedAccessFeatureStatus.AvailableWithoutToken))
    {
        // Continue
    }
    else
    {
        // Don't show pin to taskbar button or call any of the below APIs
    }
}

else
{
    // Don't show pin to taskbar button or call any of the below APIs
}

2. Obtenir l’instance TaskbarManager

Les applications Windows peuvent s'exécuter sur une grande variété d'appareils ; tous ne prennent pas en charge la barre des tâches. À l'heure actuelle, seuls les appareils de bureau prennent en charge la barre des tâches. En outre, la présence de la barre des tâches peut venir et aller. Pour vérifier si la barre des tâches est actuellement présente, appelez la méthode TaskbarManager.GetDefault et vérifiez que l’instance retournée n’est pas null. N’affichez pas de bouton épingle si la barre des tâches n’est pas présente.

Nous vous recommandons de conserver l’instance pendant la durée d’une seule opération, comme l’épinglage, puis de saisir une nouvelle instance la prochaine fois que vous devez effectuer une autre opération.

TaskbarManager taskbarManager = TaskbarManager.GetDefault();

if (taskbarManager != null)
{
    // Continue
}
else
{
    // Taskbar not present, don't display a pin button
}

3. Vérifiez si votre vignette est actuellement épinglée à la barre des tâches

Si votre vignette est déjà épinglée, vous devez afficher un bouton désépiner à la place. Vous pouvez utiliser la méthode IsSecondaryTilePinnedAsync pour vérifier si votre vignette est actuellement épinglée (les utilisateurs peuvent l’épingler à tout moment). Dans cette méthode, vous passez la TileId vignette que vous souhaitez savoir est épinglée.

if (await taskbarManager.IsSecondaryTilePinnedAsync("myTileId"))
{
    // The tile is already pinned. Display the unpin button.
}

else 
{
    // The tile is not pinned. Display the pin button.
}

4. Vérifiez si l’épinglage est autorisé

L’épinglage à la barre des tâches peut être désactivé par la stratégie de groupe. La propriété TaskbarManager.IsPinningAllowed vous permet de vérifier si l’épinglage est autorisé.

Lorsque l’utilisateur clique sur votre bouton épingle, vous devez vérifier cette propriété et, s’il est faux, vous devez afficher une boîte de dialogue de message informant l’utilisateur que l’épinglage n’est pas autorisé sur cet ordinateur.

TaskbarManager taskbarManager = TaskbarManager.GetDefault();
if (taskbarManager == null)
{
    // Display message dialog informing user that taskbar is no longer present, and then hide the button
}

else if (taskbarManager.IsPinningAllowed == false)
{
    // Display message dialog informing user pinning is not allowed on this machine
}

else
{
    // Continue pinning
}

5. Construire et épingler votre vignette

L’utilisateur a cliqué sur votre bouton épingle et vous avez déterminé que les API sont présentes, que la barre des tâches est présente et que l’épinglage est autorisé... le temps d’épingler !

Tout d’abord, construisez votre vignette secondaire comme vous le feriez lors de l’épinglage au démarrage. Pour en savoir plus sur les propriétés des vignettes secondaires, lisez Épingler des vignettes secondaires à Démarrer. Toutefois, lors de l’épinglage à la barre des tâches, en plus des propriétés précédemment requises, Square44x44Logo (il s’agit du logo utilisé par la barre des tâches) est également requis. sinon une exception est levée.

Ensuite, passez la vignette à la méthode RequestPinSecondaryTileAsync . Étant donné qu’il s’agit d’un accès limité, cela n’affiche pas de boîte de dialogue de confirmation et ne nécessite pas de thread d’interface utilisateur. Mais à l’avenir, lorsque cela est ouvert au-delà de l’accès limité, les appelants qui n’utilisent pas d’accès limité reçoivent une boîte de dialogue et doivent utiliser le thread d’interface utilisateur.

// Initialize the tile (all properties below are required)
SecondaryTile tile = new SecondaryTile("myTileId");
tile.DisplayName = "PowerPoint 2016 (Remote)";
tile.Arguments = "app=powerpoint";
tile.VisualElements.Square44x44Logo = new Uri("ms-appdata:///AppIcons/PowerPoint_Square44x44Logo.png");
tile.VisualElements.Square150x150Logo = new Uri("ms-appdata:///AppIcons/PowerPoint_Square150x150Logo.png");

// Pin it to the taskbar
bool isPinned = await taskbarManager.RequestPinSecondaryTileAsync(tile);

Cette méthode retourne une valeur booléenne qui indique si votre vignette est désormais épinglée à la barre des tâches. Si votre vignette a déjà été épinglée, la méthode met à jour la vignette existante et retourne true. Si l’épinglage n’a pas été autorisé ou que la barre des tâches n’est pas prise en charge, la méthode retourne false.

Énumérer les vignettes

Pour afficher toutes les vignettes que vous avez créées et toujours épinglées quelque part (Démarrer, barre des tâches ou les deux), utilisez FindAllAsync. Vous pouvez ensuite vérifier si ces vignettes sont épinglées à la barre des tâches et/ou au démarrage. Si la surface n’est pas prise en charge, ces méthodes retournent false.

var taskbarManager = TaskbarManager.GetDefault();
var startScreenManager = StartScreenManager.GetDefault();

// Look through all tiles
foreach (SecondaryTile tile in await SecondaryTile.FindAllAsync())
{
    if (taskbarManager != null && await taskbarManager.IsSecondaryTilePinnedAsync(tile.TileId))
    {
        // Tile is pinned to the taskbar
    }

    if (startScreenManager != null && await startScreenManager.ContainsSecondaryTileAsync(tile.TileId))
    {
        // Tile is pinned to Start
    }
}

Mettre à jour une vignette

Pour mettre à jour une vignette déjà épinglée, vous pouvez utiliser la méthode SecondaryTile.UpdateAsync comme décrit dans Mise à jour d’une vignette secondaire.

Dissocier une vignette

Votre application doit fournir un bouton dissocier si la vignette est actuellement épinglée. Pour dissocier la vignette, appelez simplement TryUnpinSecondaryTileAsync, en passant la TileId vignette secondaire que vous souhaitez annuler.

Cette méthode retourne une valeur booléenne qui indique si votre vignette n’est plus épinglée à la barre des tâches. Si votre vignette n’a pas été épinglée en premier lieu, cela retourne trueégalement . Si l’épinglage n’a pas été autorisé, cela retourne false.

Si votre vignette n’a été épinglée qu’à la barre des tâches, elle supprime la vignette, car elle n’est plus épinglée n’importe où.

var taskbarManager = TaskbarManager.GetDefault();
if (taskbarManager != null)
{
    bool isUnpinned = await taskbarManager.TryUnpinSecondaryTileAsync("myTileId");
}

Supprimer une vignette

Si vous souhaitez dissocier une vignette à partir de partout (Start, taskbar), utilisez la méthode RequestDeleteAsync .

Cela convient aux cas où le contenu épinglé par l’utilisateur n’est plus applicable. Par exemple, si votre application vous permet d’épingler un bloc-notes à la barre des tâches et au démarrage, puis que l’utilisateur supprime le bloc-notes, vous devez simplement supprimer la vignette associée au bloc-notes.

// Initialize a secondary tile with the same tile ID you want removed.
// Or, locate it with FindAllAsync()
SecondaryTile toBeDeleted = new SecondaryTile(tileId);

// And then delete the tile
await toBeDeleted.RequestDeleteAsync();

Désépiner uniquement à partir de l’écran de démarrage

Si vous souhaitez uniquement dissocier une vignette secondaire à partir de Start tout en la laissant dans la barre des tâches, vous pouvez appeler la méthode StartScreenManager.TryRemoveSecondaryTileAsync . Cela supprime de la même façon la vignette si elle n’est plus épinglée à d’autres surfaces.

Cette méthode retourne une valeur booléenne qui indique si votre vignette n’est plus épinglée à Start. Si votre vignette n’a pas été épinglée en premier lieu, cela retourne trueégalement . Si l’épinglage n’a pas été autorisé ou si l’option Démarrer n’est pas prise en charge, cela retourne false.

await StartScreenManager.GetDefault().TryRemoveSecondaryTileAsync("myTileId");

Ressources