Вопрос

Существует какой-то вызов API Win OS или около того, который позволяет получать текст с экрана.

не путем получения снимка и последующего его распознавания, а через API

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

Вот как такие инструменты, как Babylon (http://www.babylon.com) и ответы в один клик (http://www.answers.com/main/download_answers_win.jsp) и многие другие работают.

Может ли кто-нибудь указать мне правильное направление, чтобы получить эту функциональность?

Это было полезно?

Решение

Прямого способа получить текст не существует.Приложение может отображать текст миллионом различных способов (одним из которых является Windows API), и после его обработки — это просто набор пикселей.

Однако вы можете попробовать найти окно прямо под курсором мыши и попытаться получить из него текст.Это будет нормально работать с большинством стандартных элементов управления Windows (метками, текстовыми полями и т. д.), однако не будет работать в интернет-браузерах.

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

Другие советы

Вы можете получить текст каждого окна с помощью API GetWindowText.Положение мыши можно найти с помощью API GetCursorPos.

В Delphi вы можете использовать эту функцию (спасибо Питеру Ниже)

Function ChildWindowUnderCursor: HWND;
Var
  hw, lasthw: HWND;
  pt, clientpt: TPoint;
Begin
  Result := 0;
  GetCursorPos( pt );
  // find top-level window under cursor
  hw := WindowFromPoint( pt );
  If hw = 0 Then Exit;

  // look for child windows in the window recursively
  // until we find no new windows
  Repeat
    lasthw := hw;
    clientpt := Pt;
    Windows.ScreenToClient( lasthw, clientpt );
    // Use ChildwindowfromPoint if app needs to run on NT 3.51!
    hw := ChildwindowFromPointEx( lasthw, clientpt, CWP_SKIPINVISIBLE );
  Until hw = lasthw;
  Result := hw;
End;

С уважением,
Ливен

В Windows есть API для инструментов специальных возможностей, таких как программы чтения с экрана для слепых.(Более новые версии также используются для других целей, таких как автоматизация и тестирование пользовательского интерфейса.) Он работает со многими приложениями, даже с большинством браузеров, которые отображают собственный контент без использования стандартных элементов управления Windows.Он работает не со всеми приложениями, но в большинстве случаев его можно использовать для определения текста под курсором мыши.

Текущий API называется API автоматизации Windows.Описание того, как это сделать в целом, выходит за рамки ответа на вопрос о переполнении стека, поэтому я просто предоставил ссылку на документацию.

Старый API, который был широко доступен, когда этот вопрос был впервые опубликован, называется API Microsoft Active Accessibility.Как и в случае с современными API, область применения здесь слишком широка, чтобы подробно описывать ее здесь.

Обратите внимание, что документация для обоих API написана как для разработчиков, создающих инструменты специальных возможностей (например, программы чтения с экрана), так и для разработчиков, пишущих приложения, которые хотят быть совместимыми с этими инструментами специальных возможностей.

Основная идея заключается в том, что инструмент специальных возможностей получает COM-интерфейсы, предоставляемые окнами целевого приложения, и может использовать эти интерфейсы для определения элементов управления и их текста, а также того, как они связаны как логически, так и пространственно.Приложения, состоящие из стандартных элементов управления Windows, в большинстве случаев поддерживаются автоматически.Приложениям с пользовательскими реализациями пользовательского интерфейса приходится выполнять работу по обеспечению этих интерфейсов.К счастью, наиболее важные из них, такие как основные браузеры, проделали работу по поддержке этих интерфейсов.

я думаю, это называется буфер обмена.Я готов поспорить, что эти программы вводят события щелчка, двойного щелчка и клавиатуры, а затем копируют туда элементы для проверки.Альтернативно, они путаются с текстовыми элементами управления Windows и таким образом захватывают контент.Я подозреваю, что из-за проблем с безопасностью эти инструменты также имеют проблемы с запуском в Vista.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top