electrik | Дата: Понедельник, 18.01.2016, 16:22 | Сообщение # 1 |
Полковник
Группа: Друзья
Сообщений: 182
Статус: Offline
| есть задачка, считать текст с экрана не в виде картинки, а в виде текста. естественно, если текст нарисован, то такое можно реализовать только при помощи ocr. в моем случае, надо считать текст в обычных окнах windows. я вижу один способ, получать Foreground окна, потом перечислением выдергивать текст и координаты контролов, а потом восстанавливать нахождение текста из координат. может есть другие способы? данный способ, требует много чего предусматривать, например, GetWindowText не считает весь комбосписок, или ListView. по сути, я пользуюсь скринридерами, и там можно читать экран, так как он виден, но для некоторых целей, повышения доступности приложений, хотелось бы иметь свой инструмент.
|
|
| |
haav | Дата: Понедельник, 18.01.2016, 18:42 | Сообщение # 2 |
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Статус: Offline
| Ну ты же знаешь, что подавляющее большинство приложений сейчас создается не средствами winapi. Практически во всех библиотеках доминирует собственная прорисовка, пусть даже на основе GDI+ , хотя чаще с помощью графических библиотек , имеющих более мощные средства чем GDI. Отсюда , нереально получить текст с помощью стандартных функций getwindowtext, sendmessage. Возьми тот же GTK , создается обычное окно, на нем static , и далее на static все прорисовывается "вручную". Если же делать инструмент исключительно под программы, созданные с помощью winapi , то в принципе реально, просто под каждый класс контролов надо использовать свои сообщения для чтения текста.
P.S. Подобную программу пытался сделать автор клептомании. Версия для windows XP была халявной и на winXP она работала для winAPi приложений, а так же различных системных диалогов, но в windows vista и выше ставить ее было бесполезно. Хотя позднее автор внес усовершенствования , теперь она работает на старших системах, но программа стала платной. Тоже использует OCR.
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |