Je suis en train d'envoyer des frappes de mon programme C# pour une application JavaEnvoi de séquences de touches d'une application C# à une application Java - comportement étrange?
Le code pour les clés Sendig est:
private void SendKeysToWindow(string WindowName, string KeysToSend)
{
IntPtr hWnd = FindWindow(null, WindowName);
ShowWindowAsync(hWnd, SW_SHOWNORMAL);
SetForegroundWindow(hWnd);
SendKeys.Send(KeysToSend);
}
Ce code fonctionne très bien avec tous les programmes, à l'exception de l'application Java que je Essaie de contrôler.
Par exemple, si je crée un bouton avec le code folowing:
SendKeysToWindow("Java application window name", "{F2}");
SendKeysToWindow("Popoup window name", "123");
Cela envoie un F2 à la fenêtre principale du programme, où une autre fenêtre apparaît, et la deuxième commande SendKeysToWindow envoie le « 123 » à cette fenêtre. Voici comment cela devrait fonctionner, et c'est le cas avec tous les autres programmes. Cependant, lorsque j'envoie ces commandes au programme Java, ce qui suit arrive: la première commande SendKeysToWindow est exécutée correctement (la fenêtre contextuelle apparaît), mais elle n'envoie pas le "123" à cette fenêtre.
Si vous appuyez de nouveau sur le bouton, le "123" est envoyé à la fenêtre contextuelle et ouvre une autre fenêtre de groupe.
Si je crée deux boutons séparés pour les deux commandes SendKeysToWindow et les pressez l'une après l'autre, les deux commandes s'exécutent correctement.
Quel peut être le problème?
Merci pour l'aide en avanvce, ça me rend vraiment fou.
P.S .: Je suis débutant en C#, alors gardez la réponse simple.
Je suppose que vous mixez des appels synchrones et asynchrones. Essayez 'ShowWindow' au lieu de' ShowWindowAsync'. –
J'ai essayé d'utiliser ShowWindow au lieu de ShowWindowAsync. Il ne fonctionne toujours pas comme prévu, mais le comportement a changé un peu: Au premier clic, la fenêtre du groupe apparaît, mais le "123" ne lui est toujours pas envoyé. Mais si je clique une deuxième fois sur le bouton, la deuxième fenêtre apparaîtra avec le "123" collé au bon endroit! - Au moins, nous nous rapprochons un peu ... –