2009-06-25 4 views
0

J'ai une application winforms où je dois capturer l'entrée au clavier et la stocker dans un script. Le script peut ensuite être rejoué avec IronPython pour automatiser l'application. Mon point de vue actuel est d'écouter les événements KeyPress et de renvoyer le caractère pressé avec SendKeys.Send(). Pour gérer les entrées avec des modificateurs (alt, ctrl) j'écoute l'événement KeyDown mais ici je ne sais pas comment représenter les touches pressées dans le script. Voilà ce que je voudrais faire:Comment stocker et renvoyer l'entrée au clavier pour l'automatisation de l'interface utilisateur?

public void TextBox_KeyDown(KeyEventArgs e) 
{ 
    Script.AddStatement(string.Format("SendKeys.Send('{0}')", ????)); 
} 

Dois-je manuellement pour créer une chaîne à partir KeyEventArgs que SendKeys COMPREND?
Par exemple, shift + A, shift + B devient SendKeys.Send ("+ (AB)"). Détails à partir de MSDN.

Existe-t-il un autre moyen? Peut-être stocker le KeyEventArgs.KeyData et créer une nouvelle instance de KeyEventArgs et l'envoyer d'une manière ou d'une autre?

+0

Quel type de type est le script? –

+0

Qu'est-ce que SendKeys.Send() attend en tant que paramètre? Peut-être (char) e.KeyCode est déjà bon à faire ... –

Répondre

0

La réponse à cette question était d'arrêter d'utiliser SendKeys et d'utiliser à la place p/invoke de keybd_event. SendKeys a des problèmes de synchronisation et d'autres comportements inattendus.