Visual Basic - Detectar Tecla Presionada

Life is soft - evento anual de software empresarial
   
Vista:

Detectar Tecla Presionada

Publicado por Kevin (2 intervenciones) el 04/07/2008 19:52:07
Que tal muchachos, les cuento que estoy haciendo una aplicacion que arranca minimizada, y cuando apretas una tecla se abre, y si la volves a apretar se minimiza devuelta.

el tema, es que no logro conseguir que cuando el programa esta minimizado, me detecte que estoy apretando la tecla.

Alguno podria por favor darme una ayudita con esto?.

Desde ya se los re agradezco.

Saludos.

Kevin
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:Detectar Tecla Presionada

Publicado por lolo (163 intervenciones) el 04/07/2008 21:20:00
Pero es que no te entiendo, priemero nos cuentas que TIENES una aplicacion que LO HACE

Y luego que no consigues capturar la tecla pulsada cuando esta minimizado!

Pues como que estas algo comlicadito ¿no?

De todas formas trata con el keypress del form, pero pon la propiedad keypreview a true
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

RE:Detectar Tecla Presionada

Publicado por igor (633 intervenciones) el 04/07/2008 21:48:20
Hola Kevin, no es facil entenderte pero intentaré "adivinar".

Puede que tu problema sea que cuando minimizas la aplicación pierdes el foco, o sea, el ratón y teclado pasan a controlar otras aplicaciones, como el propio escritorio.

Si lo que quieres es que la aplicación responda a la tecla cuando dicha aplicación no es la activa (no tiene el foco de entrada) deberás llamar a la función GetAsyncKeyState de la API de windows. Es la misma función que utilizan los keyloggers.

Si no cambias de aplicación entre minimizar y maximizar, con lo que ha comentado lolo debe ser suficiente.
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

RE:Detectar Tecla Presionada

Publicado por Kevin (2 intervenciones) el 04/07/2008 23:13:35
Si, me explique mal, pero es EXACTAMENTE lo que me pasa, igor.

El tema claro, es que la primera vez que presiono la tecla funciona, porque el foco esta en el form. Pero una vez minimizado, al no estar el foco en mi aplicacion, por mas que yo aprete la tecla no pasa nada.

Estuve investigando la APi q me mencionaste.. pero no logro hacer que funcione si el foco esta en otra aplicacion...

Podrias darme una manito con eso?. Simlemente quiero detectar cuando la tecla 22 (el q esta a la izquierda del 1) es apretado...

Igualmente mientras tanto estuve buscando, y otra posible y mas facilk solucion, es el uso de SYSTEM HOOKS. Lo declaras y hace todo automaticamente.. el problema es que no puedo definir que tecla esperar por medio de codigo ASCII... solo por el nombre.

Te agradezco muchisimo la ayuda que me diste.

Saludos.
Kevin
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

RE:Detectar Tecla Presionada

Publicado por igor (633 intervenciones) el 04/07/2008 23:55:34
No tengo ni idea de SYSTEM HOOKS, si no te importa puedes explicarme en que consiste y así puedo investigar yo también.

De todas formas cualquier implementación pasa como es lógico por la API de windows o API32 (Aplication Program Interface). Esta no es mas que las librerías de windows que proporcionan funciones hechas para que los programa puedan crear ventanas y otras muchas cosas. Es por esto que las ventanas son siempre iguales. En VB todas las llamadas quedan ocultas para que los programadores no tengan que pensar en ellas.

Para el teclado puedes hacer lo siguiente:

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
---------
R = GetAsyncKeyState(C)

Donce C será la tecla a comprobar y R el resultado devuelto. Esto lo pones en un timer que comprueve la tecla cada 10ms.

Esta función obtiene el estado de la tecla independientemente de la aplicación activa, de manera que se puede llegar a capturar las teclas pulsadas en otros programas.

Te explicaría más, pero se alarga mucho. Mira en google la función, seguro que encuentras donde expliquen con detalle los valores a utilizar.
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