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