Pergunta

Eu tenho um controle NotifyIcon que aparece na bandeja do sistema. Como posso encontrar o local (x, y) do ícone na tela?

Graças

Foi útil?

Solução

Você não pode. Não é difícil para obter o identificador de janela para a bandeja do sistema, GetClassName () retorna "ToolbarWindow32", o nome da classe do controle barra de ferramentas padrão comum. Tenha em atenção que um SO de 64 bits tem dois deles. Então você pode enviar mensagens a ele como TB_GETBUTTONINFO. Chefe hang-ups são que você não vai saber o ID botão para escolher e as informações retornado não inclui a posição do botão.

O que é para melhor, botões mover sem você ser capaz de prendê-los.

Outras dicas

Na verdade, você pode fazer isso, aqui está o código que mostra como e muito mais.

Em qualquer evento de mouse NotifyIcon, simplesmente olhar para Control.MousePosition, este contém a (x, y) do mouse. O mesmo pode ser feito para posicionar um ContextMenu em uma forma / controlo exactamente onde a forma / controlo foi clicado usando estes (x, y) valores.

Um bom exemplo de ambos está aqui:

mais aqui: http://code.msdn.microsoft.com/TheNotifyIconExample

Depois de uma longa viagem de tentativa e erro, e o desenvolvimento de minha própria notificar ícone localizador, eu desenvolvi uma maneira de encontrar o melhor ícone de posição, até aí tudo bem, até que eu vi esse projeto incrível por @zhwang SuperNotifyIcon . Este projecto tem três maneiras de localizar o ícone de notificação, que vão desde o imprecisa (como o meu próprio desenvolvimento) para o uso de novo no Windows 7 API. Esta é a resposta definitiva.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top