Função Shell_NotifyIconA (shellapi.h)

Envia uma mensagem para a área de status da barra de tarefas.

Sintaxe

BOOL Shell_NotifyIconA(
  [in] DWORD            dwMessage,
  [in] PNOTIFYICONDATAA lpData
);

Parâmetros

[in] dwMessage

Tipo: DWORD

Um valor que especifica a ação a ser executada por essa função. Pode ter um dos seguintes valores:

NIM_ADD (0x00000000)

0x00000000. Adiciona um ícone à área status. O ícone recebe um identificador na estrutura NOTIFYICONDATA apontada por lpdata, seja por meio de seu membro uID ou guidItem . Esse identificador é usado em chamadas subsequentes para Shell_NotifyIcon para executar ações posteriores no ícone.

NIM_MODIFY (0x00000001)

0x00000001. Modifica um ícone na área status. A estrutura NOTIFYICONDATA apontada pelo lpdata usa a ID originalmente atribuída ao ícone quando foi adicionada à área de notificação (NIM_ADD) para identificar o ícone a ser modificado.

NIM_DELETE (0x00000002)

0x00000002. Exclui um ícone da área de status. A estrutura NOTIFYICONDATA apontada pelo lpdata usa a ID originalmente atribuída ao ícone quando foi adicionada à área de notificação (NIM_ADD) para identificar o ícone a ser excluído.

NIM_SETFOCUS (0x00000003)

0x00000003. Shell32.dll versão 5.0 e posterior somente. Retorna o foco para a área de notificação da barra de tarefas. Os ícones da área de notificação devem usar essa mensagem quando tiverem concluído a operação de interface do usuário. Por exemplo, se o ícone exibir um menu de atalho, mas o usuário pressionar ESC para cancelá-lo, use NIM_SETFOCUS para retornar o foco para a área de notificação.

NIM_SETVERSION (0x00000004)

0x00000004. Shell32.dll versão 5.0 e posterior somente. Instrui a área de notificação a se comportar de acordo com o número de versão especificado no membro uVersion da estrutura apontada por lpdata. O número de versão especifica quais membros são reconhecidos.

NIM_SETVERSION deve ser chamado sempre que um ícone de área de notificação é adicionado (NIM_ADD). Ele não precisa ser chamado com NIM_MODIFY. A configuração de versão não é persistida depois que um usuário faz logoff.

Para obter detalhes, consulte a seção Comentários.

[in] lpData

Tipo: PNOTIFYICONDATA

Um ponteiro para uma estrutura NOTIFYICONDATA . O conteúdo da estrutura depende do valor de dwMessage. Ele pode definir um ícone para adicionar à área de notificação, fazer com que esse ícone exiba uma notificação ou identifique um ícone para modificar ou excluir.

Retornar valor

Tipo: BOOL

Retornará TRUE se tiver êxito ou FALSE caso contrário. Se dwMessage estiver definido como NIM_SETVERSION, a função retornará TRUE se a versão tiver sido alterada com êxito ou FALSE se não houver suporte para a versão solicitada.

Comentários

A partir do Windows 2000 (Shell32.dll versão 5.0), se você definir o membro uVersion da estrutura NOTIFYICONDATA apontada por lpdata para NOTIFYICON_VERSION_4 ou superior, Shell_NotifyIcon eventos de mouse e teclado são manipulados de forma diferente do que nas versões anteriores do Windows. As diferenças incluem o seguinte:

  • Se um usuário selecionar o menu de atalho de um ícone de notificação com o teclado, o Shell agora enviará ao aplicativo associado uma mensagem WM_CONTEXTMENU . Versões anteriores enviam mensagens WM_RBUTTONDOWN e WM_RBUTTONUP .
  • Se um usuário selecionar um ícone de notificação com o teclado e ativá-lo com a tecla SPACEBAR ou ENTER, o Shell da versão 5.0 enviará ao aplicativo associado uma notificação de NIN_KEYSELECT. Versões anteriores enviam mensagens WM_RBUTTONDOWN e WM_RBUTTONUP .
  • Se um usuário selecionar um ícone de notificação com o mouse e ativá-lo com a tecla ENTER, o Shell agora enviará ao aplicativo associado uma notificação NIN_SELECT. Versões anteriores enviam mensagens WM_RBUTTONDOWN e WM_RBUTTONUP .
A partir do Windows XP (Shell32.dll versão 6.0), se um usuário passar o ponteiro do mouse sobre um ícone ao qual uma notificação de balão está associada, o Shell enviará as seguintes mensagens:
  • NIN_BALLOONSHOW. Enviado quando o balão é mostrado (balões são enfileirados).
  • NIN_BALLOONHIDE. Enviado quando o balão desaparece. Por exemplo, quando o ícone é excluído. Esta mensagem não será enviada se o balão for descartado devido a um tempo limite ou se o usuário clicar no mouse.

    A partir do Windows 7, NIN_BALLOONHIDE também é enviado quando uma notificação com o sinalizador NIIF_RESPECT_QUIET_TIME de sinalizadores tenta exibir durante o tempo de silêncio (a primeira hora de um usuário em um novo computador). Nesse caso, o balão nunca é exibido.

  • NIN_BALLOONTIMEOUT. Enviado quando o balão é descartado devido a um tempo limite.
  • NIN_BALLOONUSERCLICK. Enviado quando o balão é ignorado porque o usuário clicou no mouse.
Além dessas mensagens, a partir do Windows Vista (Shell32.dll versão 6.0.6), se um usuário passar o ponteiro do mouse sobre um ícone ao qual uma notificação de balão está associada, o Shell do Windows Vista também adicionará as seguintes mensagens:
  • NIN_POPUPOPEN. Enviado quando o usuário passa o cursor sobre um ícone para indicar que a interface do usuário pop-up mais rica deve ser usada no lugar de uma dica de ferramenta textual padrão.
  • NIN_POPUPCLOSE. Enviado quando um cursor não passa mais o mouse sobre um ícone para indicar que a interface do usuário pop-up avançada deve ser fechada.
Independentemente da versão do sistema operacional, você pode selecionar como o Shell deve se comportar chamando Shell_NotifyIcon com dwMessage definido como NIM_SETVERSION. Defina o membro uVersion da estrutura NOTIFYICONDATA apontada por lpdata para indicar se você deseja o windows 2000, o Windows Vista ou o comportamento de pré-versão 5.0 (Windows 95).
Nota As mensagens discutidas acima não são mensagens convencionais do Windows. Eles são enviados como o valor lParam da mensagem definida pelo aplicativo especificada no membro uCallbackMessage da estrutura NOTIFYICONDATA apontada por lpdata, quando Shell_NotifyIcon é chamado com o sinalizador NIM_ADD definido em dwMessage.
 
A partir do Windows XP Service Pack 2 (SP2), um ícone personalizado pode ser exibido no balão de notificação. Isso permite que o processo de chamada personalize a notificação além das opções de informações, avisos e erros disponíveis anteriormente e distingue-a de outros tipos de notificação para o usuário.

Observação

O cabeçalho shellapi.h define Shell_NotifyIcon como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante de pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho shellapi.h
Biblioteca Shell32.lib
DLL Shell32.dll (versão 4.0 ou posterior)
Conjunto de APIs ext-ms-win-shell32-l1-2-1 (introduzido no Windows 10, versão 10.0.10240)

Confira também

Notificações e a Área de Notificação