Como utilizar o tabuleiro do sistema directamente no Visual Basic

Traduções de Artigos Traduções de Artigos
Artigo: 176085 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Este artigo demonstra como tirar partido do tabuleiro do sistema Windows ou área de notificação da barra de tarefas, utilizando o Visual Basic. Coloca um ícone da sua escolha na área de notificação da barra de tarefas apresenta uma descrição da sua escolha quando o rato rested mesmo, irá restaurar a aplicação quando clicado e irá apresentar um menu de contexto quando clicou com o botão direito do rato. Trata-se todos os possível devido a capacidade de Visual Basic para processar directamente chamadas de retorno, tirando assim o máximo partido da função Shell_NotifyIcon que é exportado por Shell32.dll.

Mais Informação

O exemplo seguinte pode ser adicionado a qualquer projecto do Basic Visual que tenha, pelo menos, um formulário e um módulo padrão.

Exemplo passo a passo

  1. Adicione o seguinte código à secção declarações de um módulo padrão no projecto:
          'user defined type required by Shell_NotifyIcon API call
          Public Type NOTIFYICONDATA
           cbSize As Long
           hwnd As Long
           uId As Long
           uFlags As Long
           uCallBackMessage As Long
           hIcon As Long
           szTip As String * 64
          End Type
    
          'constants required by Shell_NotifyIcon API call:
          Public Const NIM_ADD = &H0
          Public Const NIM_MODIFY = &H1
          Public Const NIM_DELETE = &H2
          Public Const NIF_MESSAGE = &H1
          Public Const NIF_ICON = &H2
          Public Const NIF_TIP = &H4
          Public Const WM_MOUSEMOVE = &H200
          Public Const WM_LBUTTONDOWN = &H201     'Button down
          Public Const WM_LBUTTONUP = &H202       'Button up
          Public Const WM_LBUTTONDBLCLK = &H203   'Double-click
          Public Const WM_RBUTTONDOWN = &H204     'Button down
          Public Const WM_RBUTTONUP = &H205       'Button up
          Public Const WM_RBUTTONDBLCLK = &H206   'Double-click
    
          Public Declare Function SetForegroundWindow Lib "user32" _
          (ByVal hwnd As Long) As Long
          Public Declare Function Shell_NotifyIcon Lib "shell32" _
          Alias "Shell_NotifyIconA" _
          (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
    
          Public nid As NOTIFYICONDATA
    					
  2. Adicione o seguinte código ao qualquer forma no projecto que pretende que responda ao ícone de tabuleiro do sistema ou ícone de notificação, para a aplicação:
          Private Sub Form_Load()
           'the form must be fully visible before calling Shell_NotifyIcon
           Me.Show
           Me.Refresh
           With nid
            .cbSize = Len(nid)
            .hwnd = Me.hwnd
            .uId = vbNull
            .uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
            .uCallBackMessage = WM_MOUSEMOVE
            .hIcon = Me.Icon
            .szTip = "Your ToolTip" & vbNullChar
           End With
           Shell_NotifyIcon NIM_ADD, nid
          End Sub
    
          Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
          'this procedure receives the callbacks from the System Tray icon.
          Dim Result As Long
          Dim msg As Long
           'the value of X will vary depending upon the scalemode setting
           If Me.ScaleMode = vbPixels Then
            msg = X
           Else
            msg = X / Screen.TwipsPerPixelX
           End If
           Select Case msg
            Case WM_LBUTTONUP        '514 restore form window
             Me.WindowState = vbNormal
             Result = SetForegroundWindow(Me.hwnd)
             Me.Show
            Case WM_LBUTTONDBLCLK    '515 restore form window
             Me.WindowState = vbNormal
             Result = SetForegroundWindow(Me.hwnd)
             Me.Show
            Case WM_RBUTTONUP        '517 display popup menu
             Result = SetForegroundWindow(Me.hwnd)
             Me.PopupMenu Me.mPopupSys
           End Select
          End Sub
    
          Private Sub Form_Resize()
           'this is necessary to assure that the minimized window is hidden
           If Me.WindowState = vbMinimized Then Me.Hide
          End Sub
    
          Private Sub Form_Unload(Cancel As Integer)
           'this removes the icon from the system tray
           Shell_NotifyIcon NIM_DELETE, nid
          End Sub
    
          Private Sub mPopExit_Click()
           'called when user clicks the popup menu Exit command
           Unload Me
          End Sub
    
          Private Sub mPopRestore_Click()
           'called when the user clicks the popup menu Restore command
           Dim Result As Long
           Me.WindowState = vbNormal
           Result = SetForegroundWindow(Me.hwnd)
           Me.Show
          End Sub
    					
  3. Efectue as seguintes definições de propriedades no mesmo formulário que adicionou o código acima:
       Property         Required Setting for Taskbar Notification Area example
       -----------------------------------------------------------------------
       Icon           = The icon you want to appear in the system tray.
       Minbutton      = True
       ShownInTaskbar = False
    					
  4. Adicione os seguintes itens de menu ao formulário mesmo utilizando o Editor de menus:
       Caption      Name          Enabled   Visible   Position
       ---------------------------------------------------------
       &SysTray     mPopupSys      True      False    Main Level
       &Restore     mPopRestore    True      True     Inset one
       &Exit        mPopExit       True      True     Inset one
    					
Pode adicionar itens de menu adicionais conforme necessário.

Flexibilidade de área de notificação da barra de tarefas

Pode modificar a descrição aparece sobre o notificação ícone alterando a seguinte linha no procedimento Form_Load:
   .szTip = "Your ToolTip" & vbNullChar
				
substituir "A descrição" com o texto que pretende que apareça.

Pode modificar o ícone que aparece na área de notificação da barra de tarefas, alterando a seguinte linha no procedimento Form_Load:
   .hIcon = Me.Icon
				
Me.Icon substituir com qualquer ícone no projecto.

Pode alterar qualquer das definições da área de notificação da barra de tarefas em qualquer altura após a utilização da constante NIM_ADD reatribuir os valores de variável nid e, em seguida, utilizando a variante seguinte da chamada API Shell_NotifyIcon:
   Shell_NotifyIcon NIM_MODIFY, nid.
				
no entanto, se pretender um formulário diferente para receber a chamada de retorno, que necessita de eliminar primeiro o ícone actual utilizando "Shell_NotifyIcon NIM_Delete, nid" como a função NIM_Modify não aceitará um Hwnd nova, ou irá precisará de adicionar outro ícone para systray para utilizar o formulário novo "Shell_NotifyIcon NIM_ADD, nid" depois de reabastecimento o tipo de nid com a nova forma Hwnd. Também pode declarar cópias separadas do tipo nid para cada formulário pretende apresentar um ícone no tabuleiro do sistema Windows e alterá-las em cada formato é activar eventos utilizando a sequência NIM_DELETE e NIM_ADD.

Referências

Para obter mais informações sobre a utilizar o tabuleiro do sistema ou utilizar a área de notificação da barra de tarefas a partir do Visual Basic 4.0 ou anterior, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
149276Como utilizar ícones com o Windows 95/98/Me da barra de tarefas Área de notificação

Propriedades

Artigo: 176085 - Última revisão: 29 de setembro de 2006 - Revisão: 2.5
A informação contida neste artigo aplica-se a:
  • Microsoft Visual Basic 6.0 Learning Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Visual Basic Control Creation Edition
  • Microsoft Visual Basic 5.0 Learning Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
Palavras-chave: 
kbmt kbbug kbhowto KB176085 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 176085

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com