xD este tema me supero siemrpe jeje
el tema es este queria hacer un tipo de macros con el cual x ej estando en Word pulse la L y me escriba un texto (se q Word tiene para hacer macros pero lo quiero para otros programas)
el problema es q si pulso la "L" en el programa este hace lo q tiene q hacer pero, si lo hago en Word logicamente no le llega la orden a VB.
mi duda es como hacer a q interprete todas las pulsaciones aunque sea en otro lado. pense q seria algo como un keylogger pero necesito solo algunas funciones...
desde ya muchas gracias
En un form mete esté código:
Private Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Private Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
Private Sub Command1_Click()
SetTimer Me.hwnd, 0, 1, AddressOf Go
End Sub
Private Sub Command2_Click()
KillTimer Me.hwnd, 0
End Sub
Con dos CommandButton, uno para parar el timer y el otro para crearlo.
y en un módulo esto:
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Dim Tecla$, TeclaVieja$
Sub Go(ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long)
Tecla = ObtenerTecla
If Tecla <> TeclaVieja Then
TeclaVieja = Tecla
MsgBox "Tecla " & TeclaVieja & " fue pulsada."
End If
End Sub
Private Function ObtenerTecla() As String
If GetAsyncKeyState(76) Then
ObtenerTecla = Chr$(76)
End If
End Function
El getasynckeystate funciona para todo el sistema sin importar en que ventana estes activo, el SetTimer corre un timer de 1 milisegundo ejecutando las ordenes que se encuentran dentro del sub go.
Creo que es estó a lo que te referis.
Saludos!
muchas gracias x la info!
entraba para decir q ya lo habia solucionado... a lo mejor no es la mejor manera pero es muy sencilla miren:
timer1 interval=1
Citar
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Sub Timer1_Timer()
If GetAsyncKeyState(96) = -32767 Then
msgbox "se pulso el 0 de los numeros de la izq"
End If
If GetAsyncKeyState(110) = -32767 Then
msgbox "se pulso al el "." de al lado del 0"
End If
End Sub
:D
gracias de todos modos ;)