BARRA DE TAREFAS

USUARIO.EXCLUIDOS 20/03/2004 18:20:25
#16286
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.
USUARIO.EXCLUIDOS 20/03/2004 18:44:47
#16294
Resposta escolhida
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 encerrado , respostas não são mais permitidas