Можно ли получить выделенный текст из любого окна, включая элементы автоматизации, не связанные с пользовательским интерфейсом? - PullRequest
3 голосов
/ 28 января 2012

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

Я видел различные примеры использования автоматизации пользовательского интерфейса для этого, но это работает только с определеннымчто кажется более недавно разработанные приложения в .NET.Мне нужно иметь возможность получить текст любого окна.

Я помню, какое-то время назад, приложение, которое велось как словарь, где вы могли наводить курсор мыши на текст в любом месте Windows, и оно отображало бывсплывающая подсказка с определением.Может ли это быть достигнуто в C # & .NET?

Я использовал WinSpy для проверки содержимого окна, которое, похоже, не работает с UIA, и ApplicationId отображается как пустой или "".Я предполагаю, что этот конкретный элемент не поддерживается МСА.Я также заметил, когда я тестировал с Notepad ++, что он использует Scintilla, который, похоже, тоже не работает с UIA.мог бы использовать гибридный подход к моему приложению.Используйте платформу UIA, и если это не даст результатов, то снова перейдет к другому методу.

1 Ответ

1 голос
/ 28 января 2012

Один простой способ добиться этого - отправить код ключа CTRL + C в выбранные окна, после чего вы сможете найти выделенный текст в буфере обмена.Это очень легко осуществить.См. здесь для отправки ключей другим процессам и здесь для чтения буфера обмена.Недостатком является то, что вы потеряете содержимое буфера обмена.Если вы ищете более твердый раствор , проверьте этот вопрос .

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