Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Thomas Lebrun

Tout sur WPF, LINQ, C# et .NET en général !

Actualités

[Silverlight] Intégrer votre application Silverlight dans la TaskBar de Windows 7

Depuis la version 3 de Silverlight, il est possible d’exécuter des applications Silverlight en mode “Out Of Browser” autrement dit installer localement l’application et l’exécuter directement sur le poste client.

Cette fonctionnalité, bient que très pratique, était assez limité lorsque l’on voulait interopérer avec le système d’exploitation. Certes, Silverlight 4 a permis d’accéder au répertoire Documents de l’utilisateur et Silverlight 5 permettra de faire du P/Invoke mais, pour le moment, qu’avons nous ? Rien !

Enfin, jusqu’à la semaine dernière où Microsoft a mis à disposition un ensemble d’APIs, Native Extensions For Microsoft Silverlight, qui permettent (via l’interop COM, disponible depuis Silverlight 4) d’accéder/utiliser des fonctionnalités natives de Windows 7 comme:

  • l’utilisation des capteurs
  • l’utilisation de l’API “Speech” (Text to Speech et Speech To Text)
  • l’accès aux périphériques portables (caméras, téléphones, lecteurs MP3, etc.)
  • l’intégration avec la barre des tâches
  • Etc.

Nous allons ainsi voir, au travers de ce post, comment profiter des ces nouvelles fonctionnalités pour intégrer votre application Silverlight (qui doit s’exécuter en mode “Out Of Browser” avec des privilèges élèvés) dans la barre des tâches de Windows 7.

 

La première chose à faire est d’installer le runtime qui permet d’interopérer avec le système d’exploitation. Comme on ne sait pas vraiment si l’utilisateur dispose de tous les éléments sur sa machine, il est possible de demander à l’application de lancer l’installation du runtime nécessaire, que celui-ci soit embarqué dans le XAP ou bien situé sur un serveur distant:

   1: private static bool CheckRuntimeInstallation()
   2: {
   3:     try
   4:     {
   5:         if (!Application.Current.HasElevatedPermissions || !AutomationFactory.IsAvailable)
   6:         {
   7:             return false;
   8:         }
   9:  
  10:         if (!Installer.CheckNESLInstalled(1, 0))
  11:         {
  12:             Installer.InstallNESL(new Uri("Setup/NESLSetup.msi", UriKind.Relative), false, true);
  13:             if (!Installer.CheckNESLInstalled(1, 0))
  14:             {
  15:                 return false;
  16:             }
  17:             return true;
  18:         }
  19:         return true;
  20:     }
  21:     catch (Exception Ex)
  22:     {
  23:         return false;
  24:     }
  25: }

Une fois cette étape terminée, il est alors possible de commencer à travailler avec la barre des tâches. La première chose possible est de créer une liste de tâches, accessibles directement lorsque l’utilisateur cliquera avec le bouton droit sur l’icone de l’application, dans la barre des tâches:

   1: private static void BuildJumpList()
   2: {
   3:     JumpListItem firstTask = TaskbarButton.Current.Jumplist.CreateJumpListItem(1);
   4:     firstTask.Title = "Créer une fiche cliente";
   5:     firstTask.Description = "Permet de démarrer l'application sur une nouvelle fiche cliente";
   6:  
   7:     firstTask.Category = "Tâches administratirve";
   8:  
   9:     JumpListItem secondTask = TaskbarButton.Current.Jumplist.CreateJumpListItem(2);
  10:     secondTask.Title = "Ouverture une fiche cliente";
  11:     secondTask.Description = "Permet d'ouvrir l'application sur une nouvelle fiche cliente";
  12:  
  13:     secondTask.Category = "Tâches administratirve";
  14:  
  15:     TaskbarButton.Current.Jumplist.SetJumpListItems(new JumpListItem[] { firstTask, secondTask });
  16: }

A l’exécution, on constate que la JumpList comporte bien 2 nouveaux éléments:

image

Une autre des fonctionnalités que vous pouvez utiliser est la possiblité de rajouter des boutons dans la miniature qui apparait lorsque vous survolez l’icone dans la barre des tâches:

image

Si vous lancez votre application et que vous survolez son icône dans la barre des tâches, vous remarquerez que celle-ci contient 2 icones supplémentaires:

image

Seul hic, pour le moment, je n’ai pas trouvé comment intercepter le clic sur l’un de ces boutons mais je suis sur que cela viendra rapidement dans une prochaine version de l’API (ou alors si quelqu’un sait comment le faire, qu’il n’hésites pas à laisser un commentaire Smile)

Dernière fonctionnalité intéressante, le fait de pouvoir indiquer à l’utilisateur qu’une opération est en cours, à l’aide d’une barre de progression. Tradicitonnellement, ce genre d’action se fait dans l’interface graphique mais imaginer que l’utilisateur ait réduit votre application: à ce moment là, il ne peut plus savoir quand l’opération (potentiellement longue) se termine. Avec cette technique, vous pourrez ainsi le notifier de l’état d’avancement:

image

Si l’on part du principe que la valeur passée en paramètre provient d’un timer, d’un BackgroundWorker, etc., on peut imaginer que la barre de progression change de manière dynamique, dans la barre des tâches:

image

 

Voila pour ce petit tour d’horizon des fonctionnalités des Natives Extensions pour Silverlight. Bien sur, je n’ai couvert ici que la partie barre des tâches, il y a beacoup d’autres focntionnalités à voir mais je vous laisse les découvrir avec les exemples fournis !

 

A+

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: lundi 6 décembre 2010 09:41 par Thomas LEBRUN
Classé sous : ,

Commentaires

KooKiz a dit :

Sympa. La barrière entre WPF et Silverlight s'amincit à chaque fois un peu plus.

# décembre 6, 2010 10:08
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Microsoft Regional Director 2.0 ! par Le blog de Patrick [MVP Office 365] le 02-23-2015, 22:10

- TechDays Paris 2015: Malware unchained par Blog Technique de Romelard Fabrice le 02-12-2015, 22:58

- TechDays Paris 2015: La transformation du SI avec le Cloud Microsoft, quel sera le rôle de la DSI demain, comment le Cloud MS accompagne cette transfo... par Blog Technique de Romelard Fabrice le 02-12-2015, 22:51

- TechDays Paris 2015: L’intranet social avec Office 365 et Yammer - quelles possibilités d’intégration ? par Blog Technique de Romelard Fabrice le 02-12-2015, 22:46

- TechDays Paris 2015: Plenière jour 3 - Vers une technologie invisible et une intelligence omniprésente ? par Blog Technique de Romelard Fabrice le 02-12-2015, 10:59

- TechDays Paris 2015: Geek is in da {new} House par Blog Technique de Romelard Fabrice le 02-12-2015, 01:13

- TechDays Paris 2015: Windows Server vNext - Virtualisation et Stockage par Blog Technique de Romelard Fabrice le 02-12-2015, 00:26

- TechDays Paris 2015: Quoi de neuf dans Windows 10 ? par Blog Technique de Romelard Fabrice le 02-11-2015, 23:37

- TechDays Paris 2015: Réussir sa migration vers Office 365 en formant les uilisateurs par Blog Technique de Romelard Fabrice le 02-11-2015, 14:32

- TechDays Paris 2015: Windows 10 et PowerShell 5.0 par Blog Technique de Romelard Fabrice le 02-11-2015, 13:10