2010-12-03 8 views
6

Je sais comment utiliser SendKeys() mais comment faire pour simuler une touche ESCAPE pendant 5 secondes?Comment simuler keypress

+1

Juste par curiosité, je peux comprendre la nécessité de détecter un tel événement de la part de l'utilisateur, mais pourquoi le simuler par programmation? –

Répondre

13

Vous pouvez Pinvoke keybd_event et maintenez Évasion Clé pendant 5 secondes puis relâchez-le:

[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

comment puis-je utiliser/ajouter VK_ESCAPE et KEYEVENTF_KEYUP à mon projet? – Jason94

+0

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

+0

merci, n'importe où toutes les clés sont répertoriées avec son code? – Jason94

-2

essayez d'utiliser une minuterie ... utiliser System.Forms.Timer ... pour 5000ms ... alors si les 5000ms est terminé, arrêtez la minuterie ..

+0

Relisez la question, il ne s'agit pas de lire une longue pression sur une touche, mais d'en envoyer une. –

+1

Je suppose qu'il veut générer par programme quelque chose comme «KeyDown» et après 5 secs un événement «KeyUp», ne pas envoyer un KeyPress et attendre 5 secondes ... – digEmAll