Question

J'ai une application C # avec les formulaires Windows, en utilisant lequel je dois automatiser l'ouverture d'un fichier à l'aide d'un logiciel interne (MySoftware). J'ai le code suivant comme ci-dessous. Ma compréhension est que WinWaitActive () devrait attendre que je clique sur la fenêtre du logiciel interne (MySoftwareWindow) et le rendre actif, avant que le code ne passe à la ligne suivante et ouvre le fichier XML spécifié (ligne 6 dans le code ci-dessous). Au lieu de cela, ce qui se passe est que la ligne de code suivante s'exécute avant même que je puisse rendre le logiciel interne actif, exécutant ainsi le bouton ouvert (ligne 6 dans le code ci-dessous) sur la fenêtre active actuelle, qui dans ce cas est le formulaire d'application C # . Que pensez-vous qui va mal ici? Merci!

 aut = new AutoItX3Lib.AutoItX3Class();
 aut.WinWaitActive("mySoftwareWindow", "", 1);
 aut.WinMenuSelectItem("mySoftwareWindow", "", "&File", "&Open", "", "", "", "", "", "");
 aut.Send("C:\\test.xml", 0);
 //click the Open button
 aut.Send("!o", 0);
 aut.Send("{ENTER}", 0); 
Était-ce utile?

La solution

Le délai d'attente est très court, 1 seconde ne suffit pas. Faites des délais de sortie au moins 10 fois le pire des cas, allez-y au moins 20 ici. Et Assurez-vous de vérifier la valeur de retour de la fonction, il est inutile de continuer si elle a renvoyé l'échec.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top