Получить текст из любого типа документа - PullRequest
1 голос
/ 30 мая 2011

Есть ли способ (Win32API или другой), чтобы получить текст из любого типа окна? Я могу получить HWND активного окна, но при вызове отправки сообщения WM_GETTEXT не всегда получается текст (хорошим примером является MS Word).
Я пытаюсь сделать универсальную проверку орфографии, где из любого приложения пользователь нажимает комбинацию горячих клавиш и получает исправления к своему тексту.
Разве отличается, если я хочу весь текст, только выделенный текст, или произнесите слово, где находится курсор?
Я могу принимать ответы в c, c ++ или c #, используя библиотеки или Win32API или что-то еще. Если есть решение, но только на каком-то другом языке программирования (маловероятно, что это можно сделать только в Delphi, а не с помощью API, но как угодно), я, вероятно, тоже справлюсь с этим.

Ответы [ 2 ]

4 голосов
/ 30 мая 2011

Я предлагаю вам взглянуть на пользовательский интерфейс Automation API , это лучшее, что вы когда-либо найдете, так как он был разработан для такого рода использования, и забудьте о необработанном низкоуровневом ole 'Windows API: -)

Цитирую вступление:

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

Начнем с того, что попробуем UISpy tool .Это поможет проверить тип информации, которую вы сможете найти программно , прежде чем писать какой-либо код , который, по крайней мере, обеспечит вам не терять время.

Найти не так простовот ссылка: http://andrewtokeley.net/archive/2009/09/15/uispy-ndash-download-it-here.aspx

1 голос
/ 30 мая 2011

Вы не сможете сделать это без ссылки на прикладные API-интерфейсы.Различные приложения обрабатывают текст по-разному.

Например, в Блокноте текст - это просто строка в многострочном текстовом поле, которое может извлечь Windows API.

Word, однако, обрабатывает текст внутри и отображает изображение как изображение.Все, что Windows API знает о растровых изображениях, представленных Word.У Windows API нет возможности получить доступ к символам ASCII / Unicode, которые составляют текст.Для этого вам нужно использовать Word API.Многие другие приложения будут представлять ту же проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...