Foros del Web » Programación para mayores de 30 ;) » .NET »

capturar eventos del teclado con formulario fuera de foco en VB6

Estas en el tema de capturar eventos del teclado con formulario fuera de foco en VB6 en el foro de .NET en Foros del Web. Hola a todos. Estoy haciendo un programa en el que necesito capturar todos los eventos de teclado sin importar quien tenga el foco en el ...
  #1 (permalink)  
Antiguo 29/12/2009, 07:50
 
Fecha de Ingreso: febrero-2009
Mensajes: 2
Antigüedad: 15 años, 2 meses
Puntos: 0
capturar eventos del teclado con formulario fuera de foco en VB6

Hola a todos. Estoy haciendo un programa en el que necesito capturar todos los eventos de teclado sin importar quien tenga el foco en el formulario. Y ahí está mi duda, hay algun contenedor "principal" que reciba los eventos antes de lanzarlos a los distintos elementos.
mi programa consiste en que es un contador si presiono la tecla "intro", me resta uno (-1) y si pulso la tecla "espacio" aumenta uno (+1) y por ultimo al presionar la tecla "r" el contador se reinicia (0).
esto quiero dejarlo fuera de foco y cuando presione esas teclas correspondientes haga la funciones que tengan que hacer.
Les dejo el código para que lo vean:

ption Explicit

Private Declare Function SetWindowPos Lib "User32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Const SWP_NOSIZE = &H1
Const SWP_NOMOVE = &H2
Const SWP_NOZORDER = &H4
Const SWP_NOREDRAW = &H8
Const SWP_NOACTIVATE = &H10
Const SWP_FRAMECHANGED = &H20
Const SWP_SHOWWINDOW = &H40
Const SWP_HIDEWINDOW = &H80
Const SWP_NOCOPYBITS = &H100
Const SWP_NOOWNERZORDER = &H200
Const SWP_DRAWFRAME = SWP_FRAMECHANGED
Const SWP_NOREPOSITION = SWP_NOOWNERZORDER
Const HWND_TOP = 0
Const HWND_BOTTOM = 1
Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2
Private Sub Form_Load()
Dim i
i = SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE)
End Sub

Private Sub Form_LostFocus()
frmPrincipal.Show 1
End Sub

Private Sub Form_KeyPress(KeyAscii As Integer)
If (KeyAscii = 32) Then
lblNumero = CInt(lblNumero) + 1
End If
If (KeyAscii = 13) Then
lblNumero = CInt(lblNumero) - 1
End If
If (KeyAscii = 114) Then
lblNumero = 0
End If

End Sub

espero que me puedan ayudar....
  #2 (permalink)  
Antiguo 29/12/2009, 17:53
Avatar de gedarufi  
Fecha de Ingreso: diciembre-2008
Ubicación: Colombia
Mensajes: 540
Antigüedad: 15 años, 5 meses
Puntos: 22
Respuesta: capturar eventos del teclado con formulario fuera de foco en VB6

Lo que tienes que hacer es poner la propiedad KeyPreview del form en true, para que este intercepte todas los envios del teclado, posteriormente podes utilizar el metodo keypress del formulario para ingresar tu codigo.

Saludos
  #3 (permalink)  
Antiguo 29/12/2009, 18:49
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 2 meses
Puntos: 19
Respuesta: capturar eventos del teclado con formulario fuera de foco en VB6

Hola, esta pregunta es de visual basic 6 no de .NET, que algun mod mueva el tema.

el tema que por mas que le pongas el KeyPreview = True si la aplicación esta en segundo plano tampoco te detecta las teclas. lo mejor es usar las api's GetAsyncKeyStateo usar un hook de teclado que te detecte todo.

saludos.
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
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 18:05.