2010-05-13 6 views
1

J'ai une application C# avec des formulaires Windows, avec laquelle j'ai besoin d'automatiser l'ouverture d'un fichier en utilisant un logiciel interne (mySoftware). J'ai le code suivant comme ci-dessous. Ma compréhension est que WinWaitActive() devrait attendre jusqu'à ce que je clique sur la fenêtre logicielle interne (mySoftwareWindow) et le rende actif, avant que le code ne passe à la ligne suivante et ouvre le fichier xml spécifié (ligne 6 dans le code ci-dessous). Ce qui se passe, c'est que la ligne de code suivante s'exécute avant même que je puisse activer le logiciel interne, en exécutant le bouton Ouvrir (ligne 6 dans le code ci-dessous) sur la fenêtre active, dans ce cas le formulaire C# . Que pensez-vous qui ne va pas ici? Merci!Numéro AutoIT WinWaitActive

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); 

Répondre

2

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