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

- La feuille de route NON-OFFICIELLE d’Office 365 – De MS Ignite 2015 à MS Ignite 2016 par Le blog de Patrick [MVP Office 365] le 07-23-2015, 14:04

- 24 heures de conférence en ligne #Collab365 ! par Le blog de Patrick [MVP Office 365] le 07-21-2015, 18:12

- « Festival Clin d‘Œil » à Reims par Blog de Jérémy Jeanson le 07-03-2015, 14:43

- Que peut-on gagner à avoir des applications accessibles ? par Blog de Jérémy Jeanson le 07-03-2015, 14:26

- SharePoint 2007: Forcer le mode compatibilité depuis IIS par Blog Technique de Romelard Fabrice le 07-01-2015, 16:41

- [VBA] Manipuler un SQL Server sans risque par Blog de Jérémy Jeanson le 06-13-2015, 11:48

- Témoignage sur le rôle d’architecte logiciel par Blog de Jérémy Jeanson le 06-13-2015, 11:34

- NCrafts : Machine learning the F# way par Aurélien GALTIER le 06-04-2015, 11:22

- Configuration de Workflow Manager 1.0 pour SharePoint 2013 et ses soucis. par The Mit's Blog le 06-01-2015, 18:04

- TFS 2013 : Migration d’une ferme TFS 2005 vers 2013 sans Upgrade par Blog Technique de Romelard Fabrice le 06-01-2015, 11:22