Вопрос
У меня есть приложение C # с формы Windows, используя, что мне нужно автоматизировать открытие файла с использованием внутреннего программного обеспечения (MySoftware). У меня есть следующий код, как показано ниже. Мое понимание в том, что WinWaitactactive () должен подождать, пока я не нажму на окно собственного программного обеспечения (mysoftwareWindow) и сделать его активным, до того, как код переместится на следующую строку и открывает указанный файл XML (строка 6 в коде ниже). Вместо этого происходит то, что следующая строка кода работает даже до того, как я могу сделать внутреннее программное обеспечение активным, таким образом запущенную кнопку «Открыть» (строку 6 в коду ниже) в текущем активном окне, который в этом случае является формой приложения C # Отказ Как вы думаете, что идет не так? Спасибо!
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);
Решение
Тайм-аут есть очень Короче говоря, 1 секунда недостаточно. Делайте тайм-ауты не менее 10 раз в худшем случае, идите хотя бы 20 здесь. И Обязательно проверьте значение возвращаемого функции, нет смысла продолжить, если он возвращается сбой.