Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: isseu en 17 Diciembre 2009, 13:00 pm



Título: abrir ventana al apretar teclas??
Publicado por: isseu en 17 Diciembre 2009, 13:00 pm
Como puedo hacer que al apretar cierto conjunto de teclas, se habra una form??, estoy usando GetAsyncKeyState() del api de windows, pero lo estoy usando de esta forma (en un timer claro):
Código
  1.                if (GetAsyncKeyState(0x46) == -32767)
  2.                {
  3.                    if (GetAsyncKeyState(0xA2) == -32767 || GetAsyncKeyState(0xA3) == -32767)
  4.                    {
  5.                        this.Visible = true;
  6.                    }
  7.                }
  8.  
0x46=f
0xA2 y 0xA3 son ambos ctrl
Sucede que para que se habra hay que apretar ambos al mismo tiempo con poca diferencia de tiempo, ¿que otra manera mejor existe?


Título: Re: abrir ventana al apretar teclas??
Publicado por: raul338 en 17 Diciembre 2009, 13:39 pm
No se puede hacer con hot-key??? (ahi no tendrias diferencia de tiempo)

Hazlo con hooks, y cuando se presionen las teclas haz una diferencia del tiempo que paso entre ellas, si es menor a medio segundo, haces lo que tengas que hacer, sino no hagas nada. No lo hagas con el if ya que es como que estan las 2 al mismo tiempo (sino has un sleep entre un if y el otro)


Título: Re: abrir ventana al apretar teclas??
Publicado por: Meta en 17 Diciembre 2009, 15:56 pm
http://www.todoexpertos.com/categorias/tecnologia-e-internet/programacion/.net/respuestas/1395852/abrir-y-cerrar-windows-forms

http://support.microsoft.com/default.aspx/kb/821773/es

http://www.scribd.com/doc/16426286/6-Windows-Forms


Título: Re: abrir ventana al apretar teclas??
Publicado por: raul338 en 17 Diciembre 2009, 16:03 pm
Como puedo hacer que al apretar cierto conjunto de teclas, se habra una form??, estoy usando GetAsyncKeyState() del api de windows, pero lo estoy usando de esta forma (en un timer claro):
Código
  1.                if (GetAsyncKeyState(0x46) == -32767)
  2.                {
  3.                    if (GetAsyncKeyState(0xA2) == -32767 || GetAsyncKeyState(0xA3) == -32767)
  4.                    {
  5.                        this.Visible = true;
  6.                    }
  7.                }
  8.  
0x46=f
0xA2 y 0xA3 son ambos ctrl
Sucede que para que se habra hay que apretar ambos al mismo tiempo con poca diferencia de tiempo, ¿que otra manera mejor existe?

Ahora que me fijo bien, (y gracias a la respuesta de meta me fije otra vez), cargas el formulario en memoria antes de verificar las teclas??? Si es asi, al menos deberia funcionar (depende en que evento este el codigo)

Y si no lo cargas, te conviene tener el codigo en el void Main, haces un while(true) y application.doEvents, sino agrega al formulario un IMessageFilter y filtra los mensajes cuando se presionan las teclas ;)


Título: Re: abrir ventana al apretar teclas??
Publicado por: [D4N93R] en 17 Diciembre 2009, 20:45 pm
Te recomiendo que lo hagas con IMessageFilter, como no tengo tiempo te dejo dos links para que te guíes..

http://www.codeproject.com/KB/cs/imessagefilterarticle.aspx (http://www.codeproject.com/KB/cs/imessagefilterarticle.aspx)

http://www.codeproject.com/KB/COM/IMessageFilterImpl.aspx (http://www.codeproject.com/KB/COM/IMessageFilterImpl.aspx)

Un saludo!


Título: Re: abrir ventana al apretar teclas??
Publicado por: isseu en 18 Diciembre 2009, 13:43 pm
Ok muchas Gracias