Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

poner menu y balloon en systray

Estas en el tema de poner menu y balloon en systray en el foro de Visual Basic clásico en Foros del Web. Hola tengo el siguiente problema Necesito hacer que mi palicacion se muestre en el systray (Al lado del reloj del Windows XP y Vista) y ...
  #1 (permalink)  
Antiguo 03/08/2009, 08:32
 
Fecha de Ingreso: julio-2002
Ubicación: stgo rec
Mensajes: 438
Antigüedad: 21 años, 9 meses
Puntos: 3
Sonrisa poner menu y balloon en systray

Hola tengo el siguiente problema

Necesito hacer que mi palicacion se muestre en el systray (Al lado del reloj del Windows XP y Vista) y ademas muestre un mensaje amarillo (Balloon) y que al hacer clic sobre icono de mi aplicacion ya desplegada en el systray muestre un menu contextual.

Los 2 primeros problemas ya estan resueltos (systray y Balloon) los saque de la siguiente web

http://www.recursosvisualbasic.com.a...on-systray.htm

el problena es que no hay codigo para detectar el clic.

en esta misma web hay otro ejemplo que si muestra el menu pero no muesta el Balloon, pero al unirlos no me funciona.

http://www.recursosvisualbasic.com.a...l-basic/81.htm


atte.
Leo
__________________
Saludos
Leo
  #2 (permalink)  
Antiguo 03/08/2009, 11:37
 
Fecha de Ingreso: julio-2002
Ubicación: stgo rec
Mensajes: 438
Antigüedad: 21 años, 9 meses
Puntos: 3
Respuesta: poner menu y balloon en systray

Me respondo a mi mismo, aquí esta la solución si a alguien le sirve

Agreguen al proyecto 2 cajas de textbox, 1 picturebox, 3 CommandButton y un menu llamado menu_test (visible false) y un submenu llamado menu_test_cerrar

Código:
Option Explicit
' -- Api SetForegroundWindow Para traer la ventana al frente
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hWnd As Long) As Long

'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

'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
 
' Declaración Api
Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" _
(ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean

'Variable para la estructura anterior
Private sysTray As NOTIFYICONDATA
Private Sub Command1_Click()
    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.Picture
        .szTip = " Acá colocar el toolTip " & vbNullChar
        .dwState = 0
        .dwStateMask = 0
   End With
   'Notifica en el systray
   Shell_NotifyIcon NIM_ADD, sysTray
End Sub
Private Sub Command2_Click()
    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
        .szTip = " Acá colocar el toolTip" & vbNullChar
        .dwState = 0
        .dwStateMask = 0
        .szInfo = Text2 & Chr(0)
        .szInfoTitle = Text1 & 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 Command3_Click()
    ' Elimina el ícono de la barra de notificación
    Shell_NotifyIcon NIM_DELETE, sysTray
End Sub
Private Sub Form_Load()
    Command1.Caption = "Notificar en el Systray"
    Command2.Caption = "Mostrar el Balloon diálogo"
    Command3.Caption = "Eliminar del systray"
    Text1.Text = App.EXEName
    Text2.Text = " Ejemplo para colocar un Baloon tip en el systray"
    Me.Command1.Value = True
    Me.Command2.Value = True
    Me.Hide
End Sub
Private Sub menu_test_cerrar_Click()
    End
End Sub
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim msg As Long
    If (Me.ScaleMode = vbPixels) Then
        msg = X
    Else
        msg = X / Screen.TwipsPerPixelX
    End If
    Select Case msg
        Case WM_RBUTTONUP, WM_LBUTTONUP
            Call SetForegroundWindow(Me.Picture1.hWnd)
            ' -- Si hacemos Click con el boton derecho mostramos el popup Menu
            Me.PopupMenu Me.menu_test
    End Select
End Sub
__________________
Saludos
Leo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:31.