Visual Basic - icono en la barra de tareas

Life is soft - evento anual de software empresarial
 
Vista:

icono en la barra de tareas

Publicado por Luis Perez (27 intervenciones) el 16/05/2006 17:49:23
Hola a todos

Espero me puedan ayudar , lo que quiero es poner en mi proyecto un icono que este en la barra de atreas y funcione aunque mi proyecto este cerrado , como funciona un mesenger , si esta cerrado se habre al aver alguien queriendo platicar , espero me entiendan

de antemano gracias por la ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Daniel

RE:icono en la barra de tareas

Publicado por Daniel (360 intervenciones) el 16/05/2006 20:33:32
En realidad lo que debe hacer tu programa es que al cerrarse abra otra aplicacion la cual se carga en la barra tray que vendria a ser como un agente, fijate que por ejemplo cierras el Winamp y sin embargo en el administrador de tareas aparece Wangent (o algo asi), lo que tienes que hacer es crear otra aplicacion o bien ocultar todos los forms cuando le dan cerrar y asi cargar unicamente el icono en la barra tray, para eso necesitas el control que se encarga de esto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Gracias Daniel pero?

Publicado por Luis Perez (27 intervenciones) el 16/05/2006 21:48:05
No sabes cual es ese control del que hablas?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Gracias Daniel pero?

Publicado por Matías Freire (421 intervenciones) el 16/05/2006 22:10:21
En un módulo .bas poné esto:

Option Explicit
Option Base 1

Public Enum eSystemTray
LeftButtonDown
LeftButtonUp
LeftButtonDoubleClick
RightButtonDown
RightButtonUp
RightButtonDoubleClick
MouseMove
End Enum

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

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
Public Const WM_LBUTTONUP = &H202
Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_RBUTTONDOWN = &H204
Public Const WM_RBUTTONUP = &H205
Public Const WM_RBUTTONDBLCLK = &H206

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

Public Sub CrearSystemTrayIcon(ByRef fMain As Form, ByVal ai_sToolTipText As String)
With nid
.cbSize = Len(nid)
.hwnd = fMain.hwnd
.uId = vbNull
.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
.uCallBackMessage = WM_MOUSEMOVE
.hIcon = fMain.Icon
.szTip = ai_sToolTipText & vbNullChar
End With

Shell_NotifyIcon NIM_ADD, nid

End Sub

Public Sub ModificarSystemTrayIcon(Optional ByRef fMain As Form, Optional ByVal ai_lhIcon As Long, Optional ByVal ai_sToolTipText As String)

With nid
.cbSize = Len(nid)
If Not fMain Is Nothing Then .hwnd = fMain.hwnd
.uId = vbNull
.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
.uCallBackMessage = WM_MOUSEMOVE
If Not ai_lhIcon = 0 Then .hIcon = ai_lhIcon
If Not ai_sToolTipText = "" Then .szTip = ai_sToolTipText & vbNullChar
End With

Shell_NotifyIcon NIM_MODIFY, nid

End Sub

Public Sub EliminarSystemTrayIcon()

Shell_NotifyIcon NIM_DELETE, nid

End Sub

Public Function CapturarAccionesSystemTray(ByRef fMain As Form, ByVal ai_lX As Long) As eSystemTray

Dim msg As Long

If fMain.ScaleMode = vbPixels Then
msg = ai_lX
Else
msg = ai_lX / Screen.TwipsPerPixelX
End If

Select Case msg
Case WM_LBUTTONDOWN
CapturarAccionesSystemTray = LeftButtonDown
Case WM_LBUTTONUP
CapturarAccionesSystemTray = LeftButtonUp
Case WM_LBUTTONDBLCLK
CapturarAccionesSystemTray = LeftButtonDoubleClick
Case WM_RBUTTONDOWN
CapturarAccionesSystemTray = RightButtonDown
Case WM_RBUTTONUP
CapturarAccionesSystemTray = RightButtonUp
Case WM_RBUTTONDBLCLK
CapturarAccionesSystemTray = RightButtonDoubleClick
Case WM_MOUSEMOVE
CapturarAccionesSystemTray = MouseMove
End Select

End Function

y en el formulario principal esto otro:

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

Dim eResultado As eSystemTray

eResultado = CapturarAccionesSystemTray(Me, X)

Select Case eResultado
Case RightButtonDown
'Acá podrías poner, por ejemplo que te aprezca un menu contextual
'Tipo el del messenger

Case LeftButtonDoubleClick
Me.Show
End Select

End Sub

espero que te sirva!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar