Comment append du contenu à la barre des tâches Windows

J’essaie depuis un certain temps de savoir comment append du contenu à la barre des tâches près de l’horloge. Vous pouvez en voir des exemples dans NetSpeedMonitor ou NetWorx. Je suis un noob à la barre des tâches mais je ne trouve rien, peu importe à quel point je regarde. Je ne suis pas intéressé par ThumbButtonInfo ou NotifyIcon. Voici quelques exemples de contenu dans la barre des tâches (si je ne dis pas cela correctement). J’aimerais donc pouvoir faire quelque chose de similaire au premier:

NetSpeedMonitor a du texte dans la barre des tâches

NetWorx

Merci Rymn

Il y a un exemple dans codeproject montrant Extension Explorer avec des objects de bande utilisant .NET et Windows Forms

Construisez une version Release de BandObjectLib et enregistrez-la dans le Global Assembly Cache. La méthode la plus simple consiste à ouvrir BandObjectLib.sln dans Visual Studio, à définir la configuration active sur Release et à sélectionner «Rebuild Solution» dans le menu «Build». Le deuxième projet de la solution – RegisterLib – est un projet d’utilitaire C ++ qui exécute la commande ‘gacutil / if BandObjectLib.dll’ qui place l’assemblage dans GAC.

Comme vous le savez probablement déjà, les objects Band sont des composants COM. Et pour que le framework .NET puisse trouver un assembly qui implémente un composant COM, il doit être enregistré dans le GAC ou situé dans le répertoire de l’application cliente. Il existe deux applications client possibles pour Band Objects – explorer.exe et iexplorer.exe. Explorer est situé dans le répertoire Windows et IE quelque part dans “Program Files”. Donc, GAC est en fait la seule option dans ce cas. Ainsi, les assemblys .NET qui implémentent des objects de bande doivent être enregistrés dans GAC et toutes les bibliothèques dont ils dépendent (comme BandObjectLib.dll) doivent également être présentes.

Les assemblages dans le GAC doivent avoir des noms forts et des paires de clés sont nécessaires. J’ai fourni le fichier BandObjects.snk avec une paire de clés mais je vous encourage à le remplacer par le vôtre. Voir l’outil sn.exe pour plus de détails.

Créez un nouveau projet de bibliothèque de contrôle Windows et appelez-le SampleBars. Nous allons nous fier à la fonctionnalité de base de BandObjectLib. Nous devons donc append une référence à BandObjectLib \ Relase \ bin \ BandObjectLib.dll. Au fur et à mesure que nous développons une «barre Hello World», renommez correctement la classe UserControl1.cs et la classe UserControl1 – en HelloWolrdBar.cs et HelloWorldBar. Mettez également les lignes suivantes au début de HelloWorldBar.cs:

using BandObjectLib; using System.Runtime.InteropServices; 

Faites en sorte que la classe HelloWorldBar hérite de BandObject au lieu de System.Windows.Forms.UserControl. Comme je l’ai mentionné précédemment, les objects de bande sont des composants COM. Nous devons donc utiliser l’atsortingbut Guid. Utilisez guidgen.exe pour générer votre GUID unique ou utilisez celui que j’ai généré pour vous:

 [Guid("AE07101B-46D4-4a98-AF68-0333EA26E113")] 

Nous devons également signer notre assemblée avec un nom fort. Vous pouvez le faire en mettant la ligne suivante dans le fichier AssemblyInfo.cs:

 [assembly: AssemblyKeyFile(@"..\..\..\BandObjects.snk")] 

Il est maintenant temps de décider quel type d’object de bande nous voulons développer. Permet d’en faire une barre d’outils Explorer, ainsi qu’une barre d’exploration horizontale (également appelée bande de communication par navigateur). Tout ce que nous devons faire pour implémenter cette décision est d’append un atsortingbut BandObject personnalisé à notre classe HelloWorldBar:

 [Guid("AE07101B-46D4-4a98-AF68-0333EA26E113")] [BandObject("Hello World Bar", BandObjectStyle.Horizontal | BandObjectStyle.ExplorerToolbar, HelpText = "Shows bar that says hello.")] public class HelloWorldBar : BandObject { ... 

Cela suffit à rendre notre contrôle disponible dans les menus de l’explorateur ‘View-> Explorer Bars’ et ‘View-> Toolbars’. Il prend également en charge le texte de l’élément de menu – “Hello World Bar”, et lorsque l’élément de menu est en surbrillance, la barre d’état affiche “Affiche la barre qui indique bonjour”. N’aimez-vous pas la programmation déclarative et les atsortingbuts personnalisés?

Il est maintenant temps d’ouvrir HelloWorldBar.cs dans Visual Studio Designer et d’y placer des contrôles. Bien que dans ma version de HelloWorldBar, j’ai décidé de mettre un seul bouton avec la légende “Say Hello”, vous êtes libre de faire quelque chose de plus personnalisé. J’ai défini la taille du bouton à la taille de la zone client du contrôle et défini sa propriété Anchor sur la combinaison de tous les styles possibles: «Haut, Bas, Gauche, Droite». La couleur de fond est “HotTrack” et ForeColor est “Info”.

Le contrôle BandObject possède plusieurs propriétés spécifiques aux objects Band (et donc aux classes dérivées): Title, MinSize, MaxSize et IntegralSize. Je mets le titre pour HelloWorldBar sur “Hello Bar” et MinSize et Size sur “150, 24”. Oh, et dans le gestionnaire d’événements On Click du bouton, je mets le code qui affiche une boîte de message. Voici à quoi ressemble mon code final (et la plus grande partie a été généré par VS.Net):

 using System; using System.ComponentModel; using System.Windows.Forms; using BandObjectLib; using System.Runtime.InteropServices; namespace SampleBars { [Guid("AE07101B-46D4-4a98-AF68-0333EA26E113")] [BandObject("Hello World Bar", BandObjectStyle.Horizontal | BandObjectStyle.ExplorerToolbar, HelpText = "Shows bar that says hello.")] public class HelloWorldBar : BandObject { private System.Windows.Forms.Button button1; private System.ComponentModel.Container components = null; public HelloWorldBar() { InitializeComponent(); } protected override void Dispose( bool disposing ) { if( disposing ) { if( components != null ) components.Dispose(); } base.Dispose( disposing ); } #region Component Designer generated code private void InitializeComponent() { this.button1 = new System.Windows.Forms.Button(); this.SuspendLayout(); // // button1 // this.button1.Anchor = (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right); this.button1.BackColor = System.Drawing.SystemColors.HotTrack; this.button1.ForeColor = System.Drawing.SystemColors.Info; this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(150, 24); this.button1.TabIndex = 0; this.button1.Text = "Say Hello"; this.button1.Click += new System.EventHandler(this.button1_Click); // // HelloWorldBar // this.Controls.AddRange(new System.Windows.Forms.Control[] { this.button1 }); this.MinSize = new System.Drawing.Size(150, 24); this.Name = "HelloWorldBar"; this.Size = new System.Drawing.Size(150, 24); this.Title = "Hello Bar"; this.ResumeLayout(false); } #endregion private void button1_Click(object sender, System.EventArgs e) { MessageBox.Show("Hello, World!"); } } } 

Ok, maintenant nous sums prêts à construire SampleBars.dll mais ce n’est pas suffisant pour le voir dans l’explorateur. Nous devons placer notre assemblage dans le GAC et l’enregistrer en tant que serveur COM. Il existe des outils – gacutil.exe et regasm.exe qui font exactement cela. Le projet d’utilitaire C ++ nommé Register dans ma version de la solution SampleBars me libère de l’utilisation manuelle de ces outils. Il ne contient aucun fichier, juste la commande de post-construction suivante (version de débogage):

 cd $(ProjectDir)..\bin\Debug gacutil /if SampleBars.dll regasm SampleBars.dll 

Parce que vous devez vous assurer que Register project est le dernier à être intégré à la solution en utilisant des dépendances de projet / ordre de génération.

Après avoir construit la solution et exécuté les commandes gacutil et regasm, nous sums enfin prêts à démarrer Explorer et à voir notre barre d’outils et notre barre d’exploration. Et si vous avez tout fait correctement, vous devriez pouvoir voir quelque chose comme l’image en haut de l’article. Sur cette image, vous pouvez également voir comment HelloWorldBar regarde dans la barre des tâches Windows. Pour ce faire, il vous suffit de modifier l’atsortingbut BandObject en ajoutant l’indicateur BandObjectStyle.TaskbarToolBar.


Aussi, vous voudrez peut-être regarder cette réponse

Selon Microsoft, les Deskbands ne sont pas recommandés pour Windows 7 , même s’ils fonctionnent toujours. Gardez également à l’esprit que Microsoft exige que Deskbands prenne en charge Aero sur Windows 7 via l’interface IDeskband2, plutôt que sur IDeskband. En outre, Micorosft a officiellement déclaré que IDeskBand2 peut être modifié ou indisponible dans les versions ultérieures du système d’exploitation ou du produit.

Enfin, faites très attention à créer des extensions de shell dans du code managé .