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

- « Naviguer vers le haut » dans une librairie SharePoint par Blog de Jérémy Jeanson le 10-07-2014, 13:21

- PowerShell: Comment mixer NAGIOS et PowerShell pour le monitoring applicatif par Blog Technique de Romelard Fabrice le 10-07-2014, 11:43

- ReBUILD 2014 : les présentations par Le blog de Patrick [MVP Office 365] le 10-06-2014, 09:15

- II6 Management Compatibility présente dans Windows Server Technical Preview avec IIS8 par Blog de Jérémy Jeanson le 10-05-2014, 17:37

- Soft Restart sur Windows Server Technical Preview par Blog de Jérémy Jeanson le 10-03-2014, 19:43

- Non, le certificat public du CA n’est pas un certificat client !!! par Blog de Jérémy Jeanson le 10-03-2014, 00:08

- Windows Server Technical Preview disponible via MSDN par Blog de Jérémy Jeanson le 10-02-2014, 19:05

- Focus Sauvegardes SharePoint par Le blog de Patrick [MVP Office 365] le 10-02-2014, 13:11

- Technofolies, votre évènement numérique de l'année par Le Blog (Vert) d'Arnaud JUND le 09-26-2014, 18:40

- Xamarin : From Zero to Hero par Fathi Bellahcene le 09-24-2014, 17:35