2010-12-03 36 views
6

Sé cómo utilizar SendKeys(), pero ¿cómo lo hago si me gustaría simular la celebración de la tecla ESCAPE durante unos 5 segundos?Cómo simular la pulsación de la tecla

+1

Solo por curiosidad, puedo entender la necesidad de detectar tal evento a partir de la entrada del usuario, pero ¿por qué simularlo programáticamente? –

Respuesta

13

Puede PInvoke keybd_event y mantenga pulsado escape clave por 5 segundos y luego suéltelo:

[DllImport("user32.dll")] 
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo); 


keybd_event(VK_ESCAPE, 0, 0, 0) // KEY_DOWN 

System.Threading.Thread.Sleep(5000); 

keybd_event(VK_ESCAPE, 0, KEYEVENTF_KEYUP, 0) // KEY_UP 
+0

¿cómo uso/agrego VK_ESCAPE y KEYEVENTF_KEYUP a mi proyecto? – Jason94

+0

const int VK_ESCAPE = 27; const int KEYEVENTF_KEYUP = 2; – fardjad

+0

gracias, en cualquier lugar, todas las teclas se enumeran con su código? – Jason94

-2

trate de usar un temporizador ... ... usar System.Forms.Timer de 5000 ms ... entonces, si se termina la 5000ms, apagar el temporizador ..

+0

Lea de nuevo la pregunta, no se trata de leer una pulsación de tecla larga, sino de enviar una. –

+1

Supongo que quiere generar programáticamente algo como 'KeyDown' y después de 5 segundos un evento' KeyUp', sin enviar KeyPress y esperar 5 segundos ... – digEmAll

Cuestiones relacionadas