Notificacion

Iniciado por under!!!, 17 Febrero 2008, 09:10 AM

0 Miembros y 1 Visitante están viendo este tema.

under!!!

Hola a todos:

Tengo una enorme pregunta estoy haciendo un pequeño sistema pero necesito que sea visible en la barra de tareas (sysTray creo se llama), hasta ahi todo bien

El problema es que quiero que aparezca un menu contextual al dar clic derecho sobre el icono de notificacion.... alguien podria asesorarme.

De antemano muchas gracias

este es mi codigo:
Código (vb) [Seleccionar]

Option Explicit
'Estructura NOTIFYICONDATA para usar con Shell_NotifyIcon
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

'Variable para la estructura anterior
Private sysTray As NOTIFYICONDATA


'Constantes
Private Const NOTIFYICON_VERSION = 3
Private Const NOTIFYICON_OLDVERSION = 0

Private Const NIM_ADD = &H0
Private Const NIM_MODIFY = &H1
Private Const NIM_DELETE = &H2

Private Const NIM_SETFOCUS = &H3
Private Const NIM_SETVERSION = &H4

Private Const NIF_MESSAGE = &H1
Private Const NIF_ICON = &H2
Private Const NIF_TIP = &H4

Private Const NIF_STATE = &H8
Private Const NIF_INFO = &H10

Private Const NIS_HIDDEN = &H1
Private Const NIS_SHAREDICON = &H2

Private Const NIIF_NONE = &H0
Private Const NIIF_WARNING = &H2
Private Const NIIF_ERROR = &H3
Private Const NIIF_INFO = &H1
Private Const NIIF_GUID = &H4

Private Const WM_MOUSEMOVE = &H200
Private Const WM_LBUTTONDOWN = &H201
Private Const WM_LBUTTONUP = &H202
Private Const WM_LBUTTONDBLCLK = &H203
Private Const WM_RBUTTONDOWN = &H204
Private Const WM_RBUTTONUP = &H205
Private Const WM_RBUTTONDBLCLK = &H206

Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" _
(ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
Private Sub Form_Activate()
Dim msj_txt As String
Dim msj_titulo As String
msj_txt = "Bienvenido a KeepMe. La aplicación está ahora en ejecución"
msj_titulo = "Sistema KeepMe"

With sysTray
        .cbSize = Len(sysTray)
        .hWnd = Me.Picture1.hWnd
        .uID = vbNull
        .uFlags = NIF_ICON Or NIF_INFO Or NIF_MESSAGE Or NIF_TIP
        .uCallbackMessage = WM_MOUSEMOVE
        .hIcon = Me.Picture1.Picture
        .szTip = " Acá colocar el toolTip " & vbNullChar
        .dwState = 0
        .dwStateMask = 0
   End With
   
   'Notifica en el systray
   Shell_NotifyIcon NIM_ADD, sysTray
   
   
With sysTray
        .cbSize = Len(sysTray)
        .hWnd = Picture1.hWnd
        .uID = vbNull
        .uFlags = NIF_ICON Or NIF_INFO Or NIF_MESSAGE Or NIF_TIP
        .uCallbackMessage = WM_MOUSEMOVE
        .hIcon = Me.Picture1
        .szTip = "KeepMe Activado" & vbNullChar
        .dwState = 0
        .dwStateMask = 0
        .szInfo = msj_txt & Chr(0)
        .szInfoTitle = msj_titulo & Chr(0)
        .dwInfoFlags = NIIF_INFO
        .uTimeout = 100
   End With
   'Modifica el ícono con la información
   Shell_NotifyIcon NIM_MODIFY, sysTray

End Sub

Private Sub Form_Unload(Cancel As Integer)
Shell_NotifyIcon NIM_DELETE, sysTray
End Sub



~~

Yo siempre uso un modulo que hizo Sancho Mazorca un user de este foro, que está bastante bien, te pego el code, por q no encuentro el enlace:

'*****************************************************************************************************************
'*
'*  Autor: Sancho.Mazorka
'*  Fecha: 8/03/07
'*
'*  Funcion 1: Agrega un icono al SysTray
'*  Funcion 2: Crea un ToolTipText o un BalloonToolTipText
'*
'*  Mail: rhcp_269@hotmail.com
'*  Web: www.aldeamix.com/ocio/harryx  (en construccion)
'*  NOTA: Cualquier cambio echo en este modulo agregando o arreglandolo aviseme y lo pondre
'*  en la web con su nombre, como ayudante.
'*  Parametros:
'*      + AgregarIcono(Me.hWnd, Me.Icon,"Esto es un ToolTipText")
'*      + MostrarGlobo("Titulo del globo", "Texto del globo", "ToolTipText del icono", Informacion)
'*      + CambiarIcono(Me.Icon)
'*      + QuitarIcono()
'*      + TipText("Nuevo ToolTipText")
'*      + EventTray
'*          Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'*          if EventTray(X) = "LEFTDOWN" then MsgBox "Click derecho apretado"
'*          End Sub
'*
'*  NOTA MIA --> Para usar las funciones no poner parentesis ej:
'*          Private Sub Form_Load()
'*          AgregarIcono Me.hWnd, Me.Icon, "Esto es un ToolTipText"
'*          End Sub
'*****************************************************************************************************************

' + + + + + | API | + + + + + '
Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean

' + + + + + | TIPO | + + + + + '
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

'nf_IconData guarda todos los parametros de NITIFYICONDATA
Dim nf_IconData As NOTIFYICONDATA

' + + + + + | CONSTANTES | + + + + + '
'Version
Const NOTIFYICON_VERSION = 3
Const NOTIFYICON_OLDVERSION = 0
'Acciones para el API
Const NIM_ADD = &H0
Const NIM_MODIFY = &H1
Const NIM_DELETE = &H2
'Informacion
Const NIM_SETFOCUS = &H3
Const NIM_SETVERSION = &H4
'Parametros
Const NIF_MESSAGE = &H1
Const NIF_ICON = &H2
Const NIF_TIP = &H4
Const NIF_STATE = &H8
Const NIF_INFO = &H10
Const NIS_HIDDEN = &H1
Const NIS_SHAREDICON = &H2
'Tipos de iconos
Const NIIF_NONE = &H0
Const NIIF_WARNING = &H2
Const NIIF_ERROR = &H3
Const NIIF_INFO = &H1
Const NIIF_GUID = &H4
'Eventos en el icono
Const WM_MOUSEMOVE = &H200
Const WM_LBUTTONDOWN = &H201
Const WM_LBUTTONUP = &H202
Const WM_LBUTTONDBLCLK = &H203
Const WM_RBUTTONDOWN = &H204
Const WM_RBUTTONUP = &H205
Const WM_RBUTTONDBLCLK = &H206

' + + + + + | ENUMERACIONES | + + + + + '
Public Enum IconType
    Ninguno = NIIF_NONE
    Advertencia = NIIF_WARNING
    Error = NIIF_ERROR
    Informacion = NIIF_INFO
    IconoEXE = NIIF_GUID
End Enum

' + + + + + | FUNCIONES | + + + + + '
Sub AgregarIcono(UhWnd As Long, Icono As Long, Optional TipText As String)
'Agregamos un icono al Systray
With nf_IconData
    .cbSize = Len(nf_IconData) 'Tamaño del nf_IconData
    .hWnd = UhWnd 'hWnd del usuario
    .uID = vbNull '?
    .uFlags = NIF_ICON Or NIF_INFO Or NIF_MESSAGE Or NIF_TIP 'Parametros
    .uCallbackMessage = WM_MOUSEMOVE 'Parametros de respuesta al mouse
    .hIcon = Icono 'Icono a poner en el SysTray
    .szTip = TipText & vbNullChar 'ToolTipText del Icono
    .dwState = 0 '?
    .dwStateMask = 0 '?
End With

'Agregamos al SysTray
Shell_NotifyIcon NIM_ADD, nf_IconData
End Sub

Sub MostrarGlobo(Titulo As String, Texto As String, TipText As String, Optional Icono As IconType = IconoEXE)
'Establecemos un texto en el globo
With nf_IconData
    .cbSize = Len(nf_IconData) 'Tamaño del nf_IconData
    .uID = vbNull '?
    .uFlags = NIF_ICON Or NIF_INFO Or NIF_MESSAGE Or NIF_TIP 'Parametros
    .uCallbackMessage = WM_MOUSEMOVE 'Parametros de respuesta al mouse
    .szTip = TipText & vbNullChar 'ToolTipText del globo
    .dwState = 0 '?
    .dwStateMask = 0 '?
    .szInfo = Texto & Chr(0) 'Texto del globo
    .szInfoTitle = Titulo & Chr(0) 'Titulo del globo
    .dwInfoFlags = Icono 'Selecionamos el tipo globo, de informacion en este caso (NIIF_NONE, NIIF_INFO, NIIF_WARNING, NIIF_ERROR)
    .uTimeout = 3000 'Tiempo de espera  (millisec.)
End With

'Mostramos el mensaje del globo
Shell_NotifyIcon NIM_MODIFY, nf_IconData
End Sub

Sub CambiarIcono(Icono As Long)
'Establecemos el nuevo icono
nf_IconData.hIcon = Icono
'Establecemos el icono
Shell_NotifyIcon NIM_MODIFY, nf_IconData
End Sub

Sub QuitarIcono()
'Quitamos el icono
Shell_NotifyIcon NIM_DELETE, nf_IconData
End Sub

Public Sub TipText(Mensaje As String)
'Establecemos el nuevo ToolTipText del icono
nf_IconData.szTip = Mensaje & vbNullChar
'Establecemos el nuevo ToolTipText
Shell_NotifyIcon NIM_MODIFY, nf_IconData
End Sub

Function EventTray(mouseX As Single) As String
'Devolvemos el evento echo en el SysTray
Select Case mouseX / Screen.TwipsPerPixelX 'Tomamos las "coordenadas" de lo que hicimos
   Case WM_LBUTTONDOWN
      EventTray = "LEFTDOWN" 'Devolvemos que se apreto el click izquierdo
   Case WM_LBUTTONUP
      EventTray = "LEFTUP" 'Devolvemos que se solto el click izquierdo
   Case WM_LBUTTONDBLCLK
      EventTray = "LEFTDOUBLE" ''Devolvemos que se apreto 2 veces el click izquierdo
   Case WM_RBUTTONDOWN
      EventTray = "RIGHTDOWN" 'Devolvemos que se apreto el click derecho
   Case WM_RBUTTONUP
      EventTray = "RIGHTUP" 'Devolvemos que se solto el click derecho
   Case WM_RBUTTONDBLCLK
      EventTray = "RIGHTDOUBLE" ''Devolvemos que se apreto 2 veces el click derecho
End Select
End Function


Salu2

under!!!

Vale muchas gracias me a ayudado demasiado

cobein

Si queres podes ver esta clase, esta todo encapsulado el code y es IDE safe, creo que tiene todo o casi todos los comandos funciones y eventos disponibles.

http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=68948&lngWId=1
http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.