Domanda

Ho un controllo NotifyIcon che appare nella barra delle applicazioni. Come posso trovare la posizione (x, y) dell'icona sullo schermo?

Grazie

È stato utile?

Soluzione

Non puoi. Non è difficile ottenere l'handle della finestra per la barra delle applicazioni, GetClassName () restituisce " ToolbarWindow32 " ;, il nome della classe del controllo comune TOOLBAR standard. Attenzione che un sistema operativo a 64 bit ne ha due. Quindi puoi inviargli messaggi come TB_GETBUTTONINFO. I principali problemi sono che non saprai quale ID pulsante scegliere e le informazioni restituite non includono la posizione del pulsante.

Il che è il migliore, i pulsanti si muovono senza che tu sia in grado di bloccarli.

Altri suggerimenti

In realtà puoi farlo, ecco il codice che ti mostra come e molto altro.

In qualsiasi evento del mouse di NotifyIcon, basta guardare Control.MousePosition, questo contiene la (x, y) del mouse. Lo stesso può essere fatto per posizionare un ContextMenu su un modulo / controllo esattamente dove è stato fatto clic sul modulo / controllo usando questi valori (x, y).

Un buon esempio di entrambi è qui:

Altro qui: http://code.msdn.microsoft.com/TheNotifyIconExample

Dopo un lungo viaggio di tentativi ed errori, e lo sviluppo del mio localizzatore di icone di notifica, ho sviluppato un modo per trovare la migliore icona di posizione, finora tutto bene, fino a quando ho visto questo fantastico progetto di @zhwang SuperNotifyIcon . Questo progetto ha tre modi per individuare l'icona di notifica, che va dall'impreciso (come il mio sviluppo personale) all'uso del nuovo nell'API di Windows 7. Questa è la risposta definitiva.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top