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

- Kinect 1.5 is out ! par Cyril Sansus le 05-21-2012, 17:47

- Les actualités de la semaine sur c2i.fr (14 mai - 20 mai) par Richard Clark le 05-21-2012, 08:50

- Reactive Extensions : Consommer des services avec Rx Partie 3, les pièges à éviter par Léonard Labat le 05-20-2012, 23:45

- SharePoint Blog Site, problème d’archives par Le Blog (Vert) d'Arnaud JUND le 05-20-2012, 13:09

- Soirée ALT.NET Mai - 3 présentations par #Rui le 05-18-2012, 11:59

- [ #SharePoint 2010][ #SQLServer 2012] AlwaysOn pour SharePoint (2/4) : Configuration (2e partie)… par Le blog de Patrick [MVP SharePoint] le 05-18-2012, 11:31

- Team Foundation Server 11: tous les trésors cachés du site d’équipe par Philess le 05-16-2012, 19:01

- [PowerShell 3] Télécharger et installer la documentation en ligne par Blog de SPBrouillet (Pierrick BROUILLET) le 05-16-2012, 17:36

- [#SharePoint 2010][#SQLServer 2012] AlwaysOn pour SharePoint (1/4) : Configuration (1ère partie)… par Le blog de Patrick [MVP SharePoint] le 05-16-2012, 12:10

- Job Day @MIC Brussels - .Net Developers on Mobile applications par Le Blog (Vert) d'Arnaud JUND le 05-15-2012, 20:26