Что нового

Отловить окно с ошибкой в FineReader

Dmitry13

Новичок
Сообщения
15
Репутация
0
Добрый день!

есть скрипт для автоматизации распознавания файлов в FineReader 14

проблема в том, что иногда разспознавание завершается с ошибкой и весь процесс останавливается. У окна в процессе конвертации и окна с ошибкой один и тот же title. Разница в том, что окно с ошибкой имеет текст, содержащий слово warnings.

Как отловить окно с ошибкой и автоматически нажать кнопку Cancel, чтобы продолжить процесс распознавания дальше?

Спасибо
 
Автор
D

Dmitry13

Новичок
Сообщения
15
Репутация
0
InnI сказал(а):
Dmitry13
окно с ошибкой имеет текст, содержащий слово warnings
У всех Win-функций второй параметр именно для этого и предназначен.
извините, а можно поподробнее применительно к моему случаю?
Спасибо
 
A

Alofa

Гость
Dmitry13 сказал(а):
... а можно поподробнее...
Самое подробное описание:
- Заголовки и текст окон (основы)
- Заголовки и текст окон (дополнительно)
- Элементы управления

Вам нужно научиться находить и различать окна. Применительно к данному случаю для себя вы это уже сделали.
Осталось только правильно внести это в код.
 
Автор
D

Dmitry13

Новичок
Сообщения
15
Репутация
0
Alofa сказал(а):
Вам нужно научиться находить и различать окна. Применительно к данному случаю для себя вы это уже сделали.
Осталось только правильно внести это в код.

Спасибо. буду изучать
 
Автор
D

Dmitry13

Новичок
Сообщения
15
Репутация
0
Добрый день! сделал один вариант, но он мне не нравится из-за ожидания в 15 секунд между распознаваниями. меньше интервал делать не очень желаетльно, т.к. разброс времени распознавания от 3 до 12 секунд.

Код:
$handle = WinWaitActive("Conversion", "warnings", 15) 
If $handle Then
     ControlClick("Conversion", "warnings", "[ID:2657]")
EndIf


может есть какой-нибудь другой вариант?
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Dmitry13
А как вы узнаёте о завершении процесса конвертации? По наличию какого-то окна? Если так, то сделайте цикл, в котором тупо посылайте этот ControlClick до появления нужного вам окна завершения процесса.
 
Автор
D

Dmitry13

Новичок
Сообщения
15
Репутация
0
InnI сказал(а):
Dmitry13
А как вы узнаёте о завершении процесса конвертации? По наличию какого-то окна? Если так, то сделайте цикл, в котором тупо посылайте этот ControlClick до появления нужного вам окна завершения процесса.

так в том то и дело, что не узнаю. поэтому и ставлю таймаут ожидания окна с title = conversion и text = warning 15 секунд. за это время распознавание точно завершается, а потом еще скрипт ждет. если появится окно с этими параметрами, то оно закрывается, а если нет, то по истечении 15 секунд скрипт переходит к следующему изображению.

хотелось бы сделать, чтобы если ошибки нет, то скрипт сразу переходил с следующему изображению, а не дожидался окончания таймаута
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Dmitry13
Похоже, вы меня не поняли.
Представим, что окна ошибки нет и процесс распознавания всегда завершается успешно. Как вы об этом узнаёте? Что у вас является критерием завершения распознавания и переходом к следующему изображению?
 
Автор
D

Dmitry13

Новичок
Сообщения
15
Репутация
0
InnI сказал(а):
Dmitry13
Похоже, вы меня не поняли.
Представим, что окна ошибки нет и процесс распознавания всегда завершается успешно. Как вы об этом узнаёте? Что у вас является критерием завершения распознавания и переходом к следующему изображению?

критерием является
Код:
WinWaitClose("Conversion")

как только это окно закрывается, а оно закрывается автоматически после успешного распознавания, то идет переход с кледующему изображению.
если произошла ошибка, то окно будет висеть до бесконечности, пока не нажата кнопка 'Cancel', что и приводит к бесконечному ожиданию скрипта
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Dmitry13
Код:
$hWnd = WinWait("Conversion") ; окно процесса конвертации
While WinExists($hWnd)
  Sleep(250)
  ControlClick("Conversion", "warnings", "[ID:2657]")
WEnd
 
Автор
D

Dmitry13

Новичок
Сообщения
15
Репутация
0
InnI сказал(а):
Dmitry13
Код:
$hWnd = WinWait("Conversion") ; окно процесса конвертации
While WinExists($hWnd)
  Sleep(250)
  ControlClick("Conversion", "warnings", "[ID:2657]")
WEnd

Спасибо большое! работает

параллельно нашел другой путь
Код:
WinWaitClose("Conversion","",20) 
ControlClick("Conversion", "warnings", "[ID:2657]")


в моем варианте есть риск, что если распознавание за 20 секунд не уложится, то данные пропадут

Еще раз спасибо Вам
 

lemonia

Новичок
Сообщения
126
Репутация
0
Здравствуйте. Вы так и пользуетесь этим вариантом, где есть опасность исчезновения данных или нашли решение проблемы?
 
Верх