BARRA DE TAREFAS

 Tópico anterior Próximo tópico Novo tópico

BARRA DE TAREFAS

VB / VBA

 Compartilhe  Compartilhe  Compartilhe
#16286 - 20/03/2004 18:20:25

USUARIO.EXCLUIDOS

Cadast. em:


Gostaria de saber um código para deixar o meu programa oculto e seu ícone sempre aparecer na barra de tarefas ao lado do relógio.



Resposta escolhida #16294 - 20/03/2004 18:44:47

USUARIO.EXCLUIDOS

Cadast. em:


No form com um Command, cole:

Private Sub Command1_Click()
Me.Hide
End Sub
Private Sub Form_Load()
'O form deve estar visível antes de chamar o Shell_NotifyIcon
'IMPORTANTE: SUBSTITUA "Seu ToolTip"
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 = "Seu 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)
'Esta rotina recebe os callbacks do icone no systray
Dim Result As Long
Dim msg As Long
'O valor do X depende do scalemode do form
If Me.ScaleMode = vbPixels Then
    msg = X
Else
    msg = X / Screen.TwipsPerPixelX
End If
Select Case msg
    Case WM_LBUTTONUP        '514 restaura o form
        Me.WindowState = vbNormal
        Result = SetForegroundWindow(Me.hwnd)
        Me.Show
    Case WM_LBUTTONDBLCLK    '515 restaura o form
        Me.WindowState = vbNormal
        Result = SetForegroundWindow(Me.hwnd)
        Me.Show
    Case WM_RBUTTONUP        '517 Mostra o Menu popup
        Result = SetForegroundWindow(Me.hwnd)
        ' Para mostrar um menu de contexto descomente a linha abaixo e crie um menu chamando mPopupSys com pelo menus um submenu
        'Me.PopupMenu Me.mPopupSys
End Select
End Sub
Private Sub Form_Resize()
' Necessario para se ter certeza que o form minimizado está escondido
'   If Me.WindowState = vbMinimized Then Me.Hide
End Sub
Private Sub Form_Unload(Cancel As Integer)
' Remove o ícone do systray
Shell_NotifyIcon NIM_DELETE, nid
End Sub


No módulo, cole:

'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


Gosto deste código porque com outros que conheci, após fechado o programa, o ícone permanecia. Com esse é muito raro isso acontecer.

Você pode personalizá-lo, tem muitas linhas de comentário de onde podem ser retirádos apóstrofos.

Espero ter ajudado.

Boa noite!



 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por WEBMASTER em 18/08/2009 10:03:45