Como encontrar a localização do ícone na bandeja do sistema
-
07-07-2019 - |
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
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.