Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/03/2007, 10:04
Avatar de culd
culd
 
Fecha de Ingreso: noviembre-2003
Mensajes: 959
Antigüedad: 21 años, 5 meses
Puntos: 19
Simular pulsacion de tecla, y que GetKeyState la detecte

Hola que tal, estoy realizando simulaciones de pulsaciones de teclas del teclado. Y encontré un gran problema a la hora de enviar pulsaciones a ciertos programas.

Si el programa al que se le desea enviar alguna pulsación de tecla con SendKeys, utiliza la función:

Código:
Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Todas las teclas que se envíen con SendKeys, el programa en cuestión no las detecta.

Quisiera saber cómo se puede solucionar esto, ya que me está haciendo doler la cabeza.

Dejo un código de un proyecto, el cual detecta mediante GetKeyState la pulsación de los direccionales del teclado (que es lo que me interesa simular).
Solamente hay que poner 4 labels y un TIMER (intervalo 10). Los labels se llaman:
LArriba
LAbajo
LIzquierda
LDerecha

La idea es lograr mediante otro programa, enviar una simulación de las teclas direccionales del teclado, y que el proyecto detecte la pulsación y marque como “SI” se pulso.

Código:
 Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer

Private Sub Timer1_Timer()
If GetKeyState(vbKeyRight) < 0 And GetKeyState(vbKeyShift) >= 0 Then
    LDerecha.Caption = "si"
Else
    LDerecha.Caption = "no"
End If

If GetKeyState(vbKeyUp) < 0 Then
    LArriba.Caption = "si"
Else
    LArriba.Caption = "no"
End If

If GetKeyState(vbKeyDown) < 0 Then
    LAbajo.Caption = "si"
Else
    LAbajo.Caption = "no"
End If

If GetKeyState(vbKeyLeft) < 0 And GetKeyState(vbKeyShift) >= 0 Then
    LIzquierda.Caption = "si"
Else
    LIzquierda.Caption = "no"
End If
End Sub