Artigos SharpCode

Minimizando o aplicativo para a área de notificação do Windows

Alguns softwares quando são minimizados ao invés de ficarem na barra de tarefas, mostram um ícone na área de notificação do Windows, como por exemplo, o MSN Messenger e o controle de volume do computador. Para quem não sabe a área de notificação é aquela bandeja de ícones que fica ao lado do relógio na barra de tarefas do Windows, veja na figura abaixo a área de notificação do Windows 7 mostrando o controle de volume e o ícone com a indicação de bateria do notebook.

NotificationArea

Agora vamos ver como utilizar esse recurso com os nossos softwares, para o artigo vou utilizar um software fictício chamado SharpCode Chat.

Utilizei nesse artigo o Visual Studio 2008 com projetos na linguagem C# e VB.NET, clique aqui para fazer o download dos arquivos dos projetos, caso não possua o Visual Studio 2008 os códigos funcionam da mesma forma no 2005.

Crie um novo projeto do tipo Windows Application chamado SharpCode Chat, pode criar tanto em C# ou VB.NET mostrei os códigos nas duas linguagens, mude o nome do Form1 para frmSharpCodeChat, e desenhe o formulário como mostrado abaixo.

TelaInicial

Agora com o formulário desenhado, vamos arrastar para o formulário o controle responsável por mostrar o ícone do nosso aplicativo na área de notificação, na aba Commom Controls ache o controle NotifyIcon e arraste o mesmo para o formulário. O controle na Toolbox é mostrado na imagem abaixo.

Toolbox

Quando arrastamos o controle NotifyIcon para o formulário, ele é mostrado em uma barra que fica logo abaixo do formulário, a imagem do seu formulário deve ficar igual a imagem abaixo.

NotifyIcon

Agora nós podemos escolher o ícone que será mostrado na área de notificação, para isso clique no notifyIcon1 que acabamos de criar, e na janela de propriedades procure a propriedade Icon mostrada abaixo, defina nessa propriedade o ícone que será mostrado.

IconProperty

Também mude a propriedade Text do notifyIcon1 para SharpCode Chat. O valor informado na propriedade Text será mostrado em um Tooltip quando o usuário colocar o cursor do mouse sobre o ícone na área de notificação.

Agora vamos para a programação, o primeiro a fazer é esconder o nosso aplicativo quando ele for minimizado, assim ele não será mais mostrado na barra de tarefas ficará visivel para o usuário somente o ícone na área de notificação. Clique no formulário, e na janela de propriedades clique no botão de eventos, e de um duplo clique no evento Resize, veja a imagem abaixo.

Resize

O evento Resize é disparado quando nosso formulário é redimensionado, o que ocorre quando ele é minimizado, então no evento resize vamos colocar o código que quando nosso aplicativo for minimizado vamos esconde-lo. Veja abaixo o código em C# e em VB.NET.

   1: private void frmSharpCodeChat_Resize(object sender, EventArgs e)
   2: {
   3:     if (WindowState == FormWindowState.Minimized)
   4:     {
   5:         Hide();
   6:     }
   7: }
   1: Private Sub frmSharpCodeChat_Resize(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Resize
   2:     If WindowState = FormWindowState.Minimized Then
   3:         Hide()
   4:     End If
   5: End Sub

Execute o seu aplicativo e verá que o ícone será mostrado na área de notificação, caso ele não aparece verifique se ele não está configurado para ficar escondido na configuração da área de notificação, e minimize o aplicativo, verá que ele vai sumir e não aparecerá mais na barra de tarefas.

Agora volte para o design do formulário no Visual Studio, clique no controle nofifyIcon1 e na janela de propriedades, clique no botão de eventos e de um duplo clique no evento DoubleClick, nesse evento vamos fazer o aplicativo voltar ao estado normal quando o usuário der um duplo clique no ícone na área de notificação, caso queira pode implementar o código no evento Click ai com apenas 1 clique o aplicativo aparecerá novamente, segue abaixo o código que verifica se o aplicativo está minimizado, caso esteja, mostra o mesmo e volta o estado da janela para normal.

   1: private void notifyIcon1_DoubleClick(object sender, EventArgs e)
   2: {
   3:     if (WindowState == FormWindowState.Minimized)
   4:     {
   5:         Show();
   6:         WindowState = FormWindowState.Normal;
   7:     }
   8: }
   1: Private Sub NotifyIcon1_DoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NotifyIcon1.DoubleClick
   2:     If WindowState = FormWindowState.Minimized Then
   3:         Show()
   4:         WindowState = FormWindowState.Normal
   5:     End If
   6: End Sub

 

 

 

 

 

 

 

 

 

Implementado o código do evento DoubleClick execute seu aplicativo novamente e veja o funcionamento, agora após minimizado, clicando duas vezes no ícone do aplicativo na área de notificação, o aplicativo será mostrado novamente.

Agora veremos como adicionar mais uma funcionalidade ao nosso aplicativo na área de  notificação, vamos mostrar um menu de contexto quando o usuário clicar com o botão direito do mouse no ícone, e no menu mostraremos a opção para sair do aplicativo e adicionar um novo contato.

Primeiramente crie um novo formulário chamado frmAdicionarContato e desenhe o mesmo conforme mostrado abaixo.

TelaAdicionarContato

Feito isso volte para o design do frmSharpCodeChat.

Na janela de ferramentas do Visual Studio, procure a aba Menus & Toolbars e nela o controle ContextMenuStrip. Arraste o controle para o formulário. Veja abaixo o controle na Toolbox do Visual Studio.

ToolboxNavigation

Como ocorreu com o controle NofifyIcon o controle ContextMenu ficará logo abaixo do formulário, clique nele e adicione dois items ao context menu como mostrado abaixo.

DesignContextMenu

Agora para o nosso Context Menu aparecer quando clicarmos com o botão direito, devemos informar ele na propriedade ContextMenuStrip do nosso NofityIcon.

ContextMenuStrip 

Agora de um duplo clique no item Adicionar novo contato criado no context menu e nele vamos colocar o código para mostrar o formulário de cadastro de novos contatos.

   1: private void adiToolStripMenuItem_Click(object sender, EventArgs e)
   2: {
   3:     frmAdicionarContato adicionarContato = new frmAdicionarContato();
   4:     adicionarContato.ShowDialog();
   5: }

 

   1: Private Sub AdicionarNovoContatoToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AdicionarNovoContatoToolStripMenuItem.Click
   2:     Dim adicionarContato As New frmAdicionarContato()
   3:     adicionarContato.ShowDialog()
   4: End Sub

Feito isso, execute nosso aplicativo e clique com o botão direito do mouse no ícone na área de notificação que o context menu iriá aparecer, e clique no item como na imagem abaixo para visualizar o formulário para adicionar novos usuários.

ContextAdicionarContato

Agora o código para finalizar nosso aplicativo, de um duplo clique no item Sair do SharpCode Chat e escreva o seguinte código.

   1: private void sairDoSharpCodeChatToolStripMenuItem_Click(object sender, EventArgs e)
   2: {
   3:     Application.Exit();
   4: }

 

   1: Private Sub SairDoSharpCodeChatToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SairDoSharpCodeChatToolStripMenuItem.Click
   2:     Application.Exit()
   3: End Sub

Feito isso, execute nosso aplicativo e clique com o botão direito do mouse no ícone na área de notificação que o context menu iriá aparecer, e clique no item como na imagem abaixo para finalizar o aplicativo

ContextSair

Bom esse foi nosso tutorial básico de como minimizar aplicativos para a área de notificação do windows, envie dúvidas, críticas ou sugestões de artigos para marcio@sharpcode.com.br

Abraços a todos.

Comentários

ramorim disse:

Parabéns pelo artigo!!!

Espero poder colaborar em breve com algum material.

Abraços

# February 11, 2009 2:17 PM