Visual Basic - capturar eventos del teclado sin foco

Life is soft - evento anual de software empresarial
   
Vista:

capturar eventos del teclado sin foco

Publicado por juan cavieres (1 intervención) el 30/12/2009 13:18:50
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....
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:capturar eventos del teclado sin foco

Publicado por Josue E (2 intervenciones) el 18/01/2010 14:29:55
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeySpace Then
MsgBox "cont + 1"
End If
If KeyCode = vbKeyR Then
MsgBox "cont reinicia"
End If

End Sub

Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
MsgBox "cont"
End If
End Sub

Private Sub Form_Load()
Form1.KeyPreview = True
End Sub

espero que te sirva
algun duda
djfirry@hotmail.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar