Autor
|
Tema: Notificacion (Leído 1,518 veces)
|
under!!!
Desconectado
Mensajes: 44
|
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: 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
|
|
|
En línea
|
|
|
|
~~
|
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
|
|
|
En línea
|
|
|
|
under!!!
Desconectado
Mensajes: 44
|
Vale muchas gracias me a ayudado demasiado
|
|
|
En línea
|
|
|
|
|
|
|