VBasicFacil

Principal - Enlaces - Código - Controles - API


Función PostMessage

Declaración

Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Plataformas

Descripción

Envía un mensaje a una ventana para ser procesada por la función de ventanas de Windows. Esta función no espera por la respuesta del mensaje, deja el mensaje en la cola de mensajes; a diferencia de la función SendMessage que envía el mensaje y espera por el resultado.

Parámetros

hWnd Manejador de la ventana a la que se le envia el mensaje. Si el manejador es HWND_BROADCAST, el mensaje se envia todas las ventanas de alto nivel.

Msg Identificador del mensaje enviado.

wParam Datos adicionales del mensaje. Depende del mensaje.

lParam Datos adicionales del mensaje. Depende del mensaje.

Constantes

Const HWND_BROADCAST = &HFFFF

Valor de retorno

Devuelve un cero si se produce un error al enviar el mensaje y distinto de cero si no se produce error.

Ejemplo

Vamos a crear un formulario y manejarnos en el con las flechas del teclado en lugar del tabulador

Formulario (Contiene tres TextBox)

Option Explicit



Private Sub Text1_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer)
    Dim Tecla(0 To 255) As Byte
    Select Case KeyCode
        Case vbKeyRight, vbKeyDown:     ' Flecha derecha y flecha abajo
            ' Simulamos la pulsación del la tecla TAB
            PostMessage Text1(Index).hwnd, WM_KEYDOWN, VK_TAB, 0
        Case vbKeyLeft, vbKeyUp:
            GetKeyboardState Tecla(0)
            ' Simulación de la pulsación de la tecla SHIFT
            Tecla(VK_SHIFT) = True
            SetKeyboardState Tecla(0)
            ' Simulamos la pulsación de la tecla TAB
            PostMessage Text1(Index).hwnd, WM_KEYDOWN, VK_TAB, 0
            DoEvents
            ' Liberación de la tecla SHIFT
            Tecla(VK_SHIFT) = False
            SetKeyboardState Tecla(0)
    End Select
    ' Vaciamos el buffer del teclado
    KeyCode = 0
End Sub
	

Modulo (Implementado solo por claridad, podría ir en el formulario)

Option Explicit


Public Declare Function PostMessage _
        Lib "user32" _
        Alias "PostMessageA" _
       (ByVal hwnd As Long, _
        ByVal wMsg As Long, _
        ByVal wParam As Long, _
        ByVal lParam As Long) As Long
Public Declare Function SetKeyboardState _
        Lib "user32" _
       (lppbKeyState As Byte) As Long
Public Declare Function GetKeyboardState _
        Lib "user32" _
       (pbKeyState As Byte) As Long

Public Const WM_KEYDOWN = &H100
Public Const VK_TAB = &H9
Public Const VK_SHIFT = &H10

Descargar Codigo : SetKeyboardState.zip

 

Aplicaciones: Tiene tantas aplicaciones como identificadores de mensajes, de todas formas citaré aqui una:

Ver también:

Categoría: Mensajes


Ultima actualización : 7 de diciembre de 2001
Copyright © 2001 Silared, s.l.
correo-e : vbasicfacil@silared.com
Site : www.vbasicfacil.com