System Tray - O seu ícone ao lado do relógio do Windows
Neste artigo abordarei como adicionar, alterar ou excluir seu ícone ao lado do relógio do Windons além de personalizar o título, a mensagem e o ícone do balão que é exibido sobre o seu ícone de acordo com a sua preferência.
Primeiramente desenvolveremos todo o código referente ao objeto SystemTray em um módulo de classe no qual criaremos seus métodos e propriedades. Sendo assim, você poderá instanciar o módulo de classe em qualquer parte de seu projeto possibilitando acessar e/ou definir as propriedades e métodos do objeto SystemTray de acordo com o seu propósito.
Pronto para começar?
Inicie um módulo de classe, renomei-e como clsSystemTray e insere o código a seguir:
Option Explicit '************************************************** 'Classe criada por César A Pinheiro em 18/12/2007 'Última alteração em 18/12/2007 por César A Pinheiro 'Descr.: cria um objeto System Tray (ícone ao lado do relógio do windows) '************************************************** 'Função que envia ícone para System Tray (ao lado do relógio do windows) Private Declare Function Shell_NotifyIcon Lib _ "shell32.dll" Alias "Shell_NotifyIconA" _ ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long 'Declaração de propriedades do objeto STray Private Const NIM_ADD = &H0 Private Const NIM_MODIFY = &H1 Private Const NIM_DELETE = &H2 Private Const NIF_MESSAGE = &H1 Private Const NIF_ICON = &H2 Private Const NIF_INFO = &H10 Private Const NIF_TIP = &H4 Private Const NIIF_NONE = &H0 Private Const NIIF_INFO = &H1 Private Const NIIF_WARNING = &H2 Private Const NIIF_ERROR = &H3 Private Const NIIF_USER = &H4 Private Const WM_USER = &H400 Private Const WM_MOUSEMOVE = &H200 Private Const TRAY_CALLBACK = (WM_USER + 1001&) Private Type NOTIFYICONDATA cbSize As Long hWnd As Long uID As Long uFlags As Long uCallbackMessage As Long hIcon As Long szTip As String * 128 dwState As Long dwStateMask As Long szInfo As String * 256 uTimeout As Long szInfoTitle As String * 64 dwInfoFlags As Long End Type Private STray As NOTIFYICONDATA 'variáreis valores de propriedades Private m_id As Long Private m_hWnd As Long Private m_activated As Boolean Private m_tool_tip_text As String Private m_balloon_text As String Private m_balloon_title As String Private m_balloon_icon As Long Private m_icon As StdPicture Public Enum InfoFlags trayNone = NIIF_NONE trayInformation = NIIF_INFO trayExclamation = NIIF_WARNING trayCritical = NIIF_ERROR trayDefinedUser = NIIF_USER End Enum Public Sub Show(value_hWnd As Long) If Activated = True Then Err.Raise 513, , "O objeto já está ativo." Exit Sub End If hWnd = value_hWnd Call DefinePropertiesTray Call Shell_NotifyIcon(NIM_ADD, STray) Activated = True End Sub Public Function Refresh() If Activated = False Then Err.Raise 516, , "O objeto não está ativo." Exit Function End If Call DefinePropertiesTray Call Shell_NotifyIcon(NIM_MODIFY, STray) End Function Public Function Unload() If Activated = False Then Err.Raise 516, , "O objeto não está ativo." Exit Function End If Call Shell_NotifyIcon(NIM_DELETE, STray) Activated = False End Function 'define as propriedades do SystemTray Private Sub DefinePropertiesTray() STray.uID = Id STray.hWnd = hWnd STray.cbSize = Len(STray) STray.hIcon = m_icon STray.szTip = ToolTipText STray.szInfo = BalloonText STray.szInfoTitle = BalloonTitle STray.uCallbackMessage = WM_MOUSEMOVE STray.dwState = 0 STray.dwStateMask = 0 STray.uFlags = NIF_ICON Or NIF_MESSAGE Or NIF_TIP Or NIF_INFO STray.dwInfoFlags = BalloonIcon End Sub Public Property Let Icon(new_value As String) Set m_icon_tray = LoadPicture(new_value) End Property Private Property Let hWnd(new_value As Long) m_hWnd = new_value End Property Private Property Let Activated(new_value As Boolean) m_activated = new_value End Property Public Property Let ToolTipText(new_value As String) m_tool_tip_text = Left(new_value, 127) End Property Public Property Let BalloonText(new_value As String) m_balloon_text = Left(new_value, 255) End Property Public Property Let BalloonTitle(new_value As String) m_balloon_title = Left(new_value, 63) End Property Public Property Let BalloonIcon(new_value As InfoFlags) m_balloon_icon = new_value End Property Public Property Let Id(new_value As Long) m_id = new_value End Property Private Property Get hWnd() As Long hWnd = m_hWnd End Property Public Property Get Activated() As Boolean Activated = m_activated End Property Public Property Get ToolTipText() As String ToolTipText = m_tool_tip_text & vbNullChar End Property Public Property Get BalloonText() As String BalloonText = m_balloon_text & vbNullChar End Property Public Property Get BalloonTitle() As String BalloonTitle = m_balloon_title & vbNullChar End Property Public Property Get BalloonIcon() As InfoFlags If m_balloon_icon = 0 Then BalloonIcon = trayNone Else BalloonIcon = m_balloon_icon End If End Property Public Property Get Id() As Long If m_id = 0 Then Id = vbNull Else Id = m_id End If End Property |
Pronto! Agora você pode instanciar o módulo de classe no código do seu formulário e acessar suas propriedades e métodos.
Instanciando o módulo de classe no código do seu formulário:
Private SysTray As New clsSystemTray
Lista das Propriedades e Métodos da classe:
PROPRIEDADES | |||||||||||||||||||
Activate | Retorna valor booleano (True/False) indicando se o ícone encontra-se ativo ou não. Somente Leitura | ||||||||||||||||||
BalloonIcon | Opcional. Expressão numérica que indica o tipo de ícone a ser exibido no balão de mensagem do System Tray. O valor padrão é 0 (zero).
| ||||||||||||||||||
BalloonText | Opcional. Expressão de seqüência de caracteres exibida como mensagem no Balão de Mensagem. Se omitir, o Balão de Mensagem não será exibido. | ||||||||||||||||||
BalloonTitle | Opcional. Expressão de seqüência de caracteres exibida como título no Balão de Mensagem. | ||||||||||||||||||
Icon | Obrigatória. Expressão de seqüência de caracteres indicando o caminho completo inclusive a sua extensão (*.ico) do ícone a ser exibido no SystemTray. Se omitir, causará um erro. | ||||||||||||||||||
Id | Opcional. Expressão numérica para indicar um valor de identificação para o SystemTray. Caso você deseje exibir mais de um ícone no SystemTray, deverá informar valores distintos para cada um deles. | ||||||||||||||||||
ToolTipText | Opcional. Expressão de seqüência de caracteres exibida na caixa de mensagem quando o cursor do mouse se posiciona sobre o SystemTray. |
MÉTODOS | |
Refresh | Atualiza todas as propriedades definidas pelo usuário do SystemTray quando o mesmo se encontra ativo. Se o valor da propriedade Activate for False e você chamar o método Refresh, causará um erro. |
Show | Mostra o ícone e as propriedades definidas do SystemTray. Sintaxe |
Unload | Remove o objeto SystemTray. Se o valor da propriedade Activate for True e você chamar o método Refresh, causará um erro. |
Veja um exemplo no código do meu Formulário:
Private Sub Form_Load()Dim SysTray As New clsSystemTrayEnd Sub |
0 comentários:
Postar um comentário
Deixe seu comentário ai, pode ser sobre alguma dúvida, o que for, iremos te ajudar.