Question

J'ai un contrôle NotifyIcon qui apparaît dans la barre d'état système. Comment puis-je trouver l'emplacement (x, y) de l'icône à l'écran?

Merci

Était-ce utile?

La solution

Vous ne pouvez pas. Il n’est pas difficile d’obtenir le descripteur de fenêtre de la barre des tâches système, GetClassName () renvoie "ToolbarWindow32", le nom de classe du contrôle commun TOOLBAR standard. Attention, un système d'exploitation 64 bits en a deux. Ensuite, vous pouvez lui envoyer des messages tels que TB_GETBUTTONINFO. Les problèmes principaux sont que vous ne saurez pas quel ID de bouton choisir et que les informations renvoyées n'incluent pas la position du bouton.

Pour le meilleur, les boutons se déplacent sans que vous puissiez les verrouiller.

Autres conseils

En fait, vous pouvez le faire, voici un code qui vous montre comment et bien plus encore.

Dans tout événement de souris de NotifyIcon, il suffit de regarder Control.MousePosition, qui contient le (x, y) de la souris. La même chose peut être faite pour positionner un ContextMenu sur un formulaire / contrôle exactement là où un clic a été effectué sur le formulaire / contrôle en utilisant ces valeurs (x, y).

Voici un bon exemple de ces deux aspects:

Plus ici: http://code.msdn.microsoft.com/TheNotifyIconExample

Après un long parcours d'essais et d'erreurs et le développement de mon propre localisateur d'icônes de notification, j'ai développé un moyen de trouver la meilleure icône de position, jusqu'à présent, jusqu'à ce que je voie cet étonnant projet de @zhwang SuperNotifyIcon . Ce projet propose trois méthodes pour localiser l’icône de notification, allant de l’inadéquat (comme mon propre développement) à l’utilisation des nouvelles API Windows 7. C’est la réponse définitive.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top