VBasicFacil

Principal - Enlaces - Codigo - Controles - API


Función SetForegroundWindow

Declaración

Declare Function SetForegroundWindow Lib "user32" Alias "SetForegroundWindow" (ByVal hwnd As Long) As Long

Plataformas

Descripción

Pone el hilo que crea la ventana especificada en primer plano y activa la ventana. Las entradas del teclado son dirigidas a la ventana.

Parámetros

hWnd Identifica la ventana que será activada y trae el proceso a primer plano.

Valor devuelto

Si la funcion falla devuelve 0, sino devuelve distinto de 0. Para saber mas información del error usar la función GetLastError.

Ejemplo

Se abre un formulario que al minimizarlo pasa al TrayIcon. Pondremos un Icono en el TrayIcon que podra ser verde o rojo según el menu emergente que aparece al pasar el raton sobre el icono.

Formulario (Contiene dos PictureBox )

Option Explicit


Private Sub Form_Load()
    Me.Show
    Icono.cbSize = Len(Icono)
    Icono.hwnd = Picture2.hwnd
    Icono.uID = 1&
    Icono.uFlags = NIF_MESSAGE Or NIF_ICON Or NIF_TIP
    Icono.uCallbackMessage = WM_MOUSEMOVE
    Icono.hIcon = Picture2.Picture
    Icono.szTip = "TrayIcon Menu" & Chr$(0)
    Shell_NotifyIcon NIM_ADD, Icono
End Sub

Private Sub Form_Resize()
    ' Ocultar el formulario si es minimizado
    ' Ocultar el icono del tray si el tamaño es normal
    Select Case Me.WindowState
        Case vbMinimized
            Me.Hide
            Shell_NotifyIcon NIM_ADD, Icono
        Case vbNormal
            Shell_NotifyIcon NIM_DELETE, Icono
    End Select
End Sub

Private Sub mnuCerrar_Click()
    Shell_NotifyIcon NIM_DELETE, Icono
    End
End Sub

Private Sub mnuRojo_Click()
   mnuRojo.Checked = True
   mnuVerde.Checked = False
   Me.Icon = Picture1.Picture
   Icono.hIcon = Picture1.Picture
   Icono.szTip = " Opcion Roja " & Chr$(0)
   Shell_NotifyIcon NIM_MODIFY, Icono
End Sub

Private Sub mnuVerde_Click()
   mnuVerde.Checked = True
   mnuRojo.Checked = False
   Me.Icon = Picture2.Picture
   Icono.hIcon = Picture2.Picture
   Icono.szTip = " Opcion verde " & Chr$(0)
   Shell_NotifyIcon NIM_MODIFY, Icono
End Sub

Private Sub Picture2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Dim lMessage As Long
    Dim Result As Long

    If Me.ScaleMode = vbPixels Then
        'No necesita conversion
        lMessage = X
    Else
        'Convertimos Pixels a Twips
        lMessage = X / Screen.TwipsPerPixelX
    End If
    Select Case lMessage
        Case WM_MOUSEMOVE
        Case WM_LBUTTONDOWN
        Case WM_LBUTTONUP
            Form1.PopupMenu Form1.mnuMenu
        Case WM_LBUTTONDBLCLK
            Result = SetForegroundWindow(Me.hwnd)
            Me.WindowState = vbNormal
            Me.Show
        Case WM_RBUTTONDOWN
        Case WM_RBUTTONUP
            Form1.PopupMenu Form1.mnuMenu
        Case WM_RBUTTONDBLCLK
            Result = SetForegroundWindow(Me.hwnd)
            Me.WindowState = vbNormal
            Me.Show
        Case Else
    End Select
End Sub

Modulo

Option Explicit



Public Declare Function Shell_NotifyIcon _
           Lib "shell32.dll" _
           Alias "Shell_NotifyIconA" _
           (ByVal dwMessage As Long, _
           lpData As NOTIFYICONDATA) As Long
Public Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long

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

Global Icono As NOTIFYICONDATA

'   Mensajes del Shell_NotifyIcon
Global Const NIM_ADD = &H0
Global Const NIM_MODIFY = &H1
Global Const NIM_DELETE = &H2
Global Const NIF_MESSAGE = &H1
Global Const NIF_ICON = &H2
Global Const NIF_TIP = &H4

'   Mensajes que windows manda al programa
Public Const WM_MOUSEMOVE = &H200       'MouseMove message
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
Descargar Codigo : NotifyIcon.zip

 

Aplicaciones:

Ver también:

Categoría: Varios


Ultima actualización : 29 de noviembre de 2003
Copyright © 2000 - 2003 Silared, s.l.
correo-e : vbasicfacil@silared.com
Site : www.vbasicfacil.com