2009-11-23 4 views
0

im essayant de faire un outil automatisé pour la volaille des boîtes de texte avec des noms d'utilisateur pour une application de répartiteur au travail.problème avec le clavier simuler l'événement de presse

Im ayant des problèmes en essayant de simultate appuyer sur la touche, si le tableau inputArrayX [i] contient a, b, c

la keyboardsim pressera abc, mais si le tableau contient a, b, b, c, c il tape toujours seulement abc, et pas abbcc comme je le veux faire.

Quelqu'un at-il une idée de ce que je fais mal ici?

private void MouseMacroChangeUser() 
    { 

     //move form to 0,0 
     this.Location = new Point(0, 0); 
     //set xy to mouse current pos 
     userMousePos(); 
     //inputBlocker(); 
     xX = int.Parse(this.Location.X.ToString()); 
     yY = int.Parse(this.Location.Y.ToString()); 
     defaultMousePos(); 
     //Thread.Sleep(600); 

     Cursor.Position = new Point(Cursor.Position.X + 739, Cursor.Position.Y + 162); 
     //Thread.Sleep(100); 
     MouseSimulator.DoubleClick(MouseButton.Left); 
     for (int i = 0; i < inputArrayX.Length; i++) 
     { 
      string tempX = inputArrayX[i].ToString(); 
      Keys keys = mapToKeyboardMacro(tempX); 
      KeyboardSimulator.KeyDown(keys); 
     } 
     KeyboardSimulator.KeyPress(Keys.Enter); 
     MouseSimulator.Click(MouseButton.Left); 

     //reset mouse to user pos. 
     Cursor.Position = new Point(x, y); 

     needUnblock = true; 

     //inputBlocker(); 
    } 

    private Keys mapToKeyboardMacro(string key) 
    { 
     if (key == "space") 
     { 
      return Keys.Space; 
     } 
     else if (key == "a") 
     { 
      return Keys.A; 
     } 
     else if (key == "b") 
     { 
      return Keys.B; 
     } 
     else if (key == "c") 
     { 
      return Keys.C; 
     } 
     else if (key == "d") 
     { 
      return Keys.D; 
     } 
    } 

Répondre

2

Vous ne lancez jamais la commande KeyUp de votre KeyboardSimulator. Lorsque la touche est enfoncée, elle ne peut plus être pressée. Vous devez laisser le KeyUp afin de déclencher un nouvel événement KeyDown.

+0

ah ofc, merci accouplent pour signaler. – Darkmage

+0

Jeff, tu as un +1 de ma part pour avoir été le premier ... Je ne sais pas pourquoi ma réponse a été acceptée, mais j'ai senti que c'était une aussi bonne réponse que la mienne. –

+0

Merci - mais je pense que votre réponse était un peu plus claire étant le fait qu'il n'a qu'un seul appel à faire avec votre et deux à faire avec ma solution. De toute façon, le chat est écorché et la journée est terminée. Donc +1 de ma part à vous. – Jeff

2

Essayez changing KeyboardSimulator.KeyDown(keys); à utiliser KeyboardSimulator.KeyPress(keys);

Je ne sais pas si les événements de KeyDown vérifiera l'état de la clé si elle est déjà en baisse ..

+0

très bien, juste ce que j'étais après. comment je ne l'ai pas vu. – Darkmage

Questions connexes