2015-04-22 2 views
1

Я изо всех сил пытаюсь найти надежный способ получить содержимое/текст окна, находящегося на переднем плане. Он должен быть в состоянии определить текст из всех возможных программ, которые пользователь в настоящее время используется, если это возможноПолучить содержимое любого активного окна

Что я пробовал:

  • Возьмите скриншот текущего активного окна, применить несколько фильтров и выполните OCR-алгоритм (tesseract .Net wrapper). Это работает, но занимает много времени и не очень точно.
  • Затем я попробовал Функции API Windows (FindWindow и SendMessage), как описано here. Я мог бы сделать его запустить для стандартного редактора (блокнот), например, но не для большинства других программ
  • я также пытался заставить его работать с AutoHotKey и функциями WinGetText и снова .Net Wrapper. Здесь я просто получаю информацию о окне, но никоим образом не текст его ...

К сожалению, теперь у меня нет другой идеи, что делать, поскольку я застрял во всех отношениях ... У кого-то есть опыт с этим или знает способ, который работает? Любое предложение действительно очень ценится

+2

Нет общего способа сделать это. Если программа поддерживает доступность, вы можете, вероятно, использовать API доступности для извлечения текста. Если текст является заголовком элемента управления (например, STATIC), вы можете использовать 'GetWindowText'. Если это простой текст, который отображается через «TextOut» или аналогичный, то OCR - это ваш единственный вариант. –

+0

UIAutomation - стандартный способ. Тем не менее, не все приложения раскрываются. –

+0

@JonathanPotter: Спасибо за ваш комментарий! Да, текст обычно не может быть содержимым элемента управления, только из среды IDE, окна браузера, Word, Outlook и т. Д. Возможно, вам известно, можно ли каким-либо образом связать с текстовым рендерингом (то есть, где фактическое окно создано)? – casaout

ответ

0

Будет сложно найти единственное решение для извлечения текста из приложений. Для этого потребуются различные методы для разных программ.

Для AutoHotkey AccViewer, который использует Acc.ahk, является лучшим методом для первого курорта. Acc работает с большим количеством элементов управления, а также элементов в элементах управления, он может охватывать гораздо больше типов управления, чем команда AutoHotkey ControlGet.

Acc Библиотека [AHK_L] (обновлено 09/27/2012) - скрипты и функции - AutoHotkey сообщества
https://autohotkey.com/board/topic/77303-acc-library-ahk-l-updated-09272012/

Доступная Info Viewer - Alpha Release (2012-09-20) - Сценарии и функции - AutoHotkey сообщество
https://autohotkey.com/board/topic/77888-accessible-info-viewer-alpha-release-2012-09-20/

ссылка, описывающая некоторые дополнительные методы извлечения текста:

AutoHotKey ControlGet

Примечание:

COM (Component Object Model), обрабатывается автоматически с помощью AutoHotkey. Его можно использовать для извлечения текста из веб-элементов в Internet Explorer и с помощью кода VBA, текст может быть получен из программ MS Office, таких как MS Excel и MS Word.