К сожалению, нет никакого способа получить выделенный текст из любого произвольного приложения.UI Automation работает , если , приложение поддерживает UIA TextPattern;к сожалению, большинство этого не делают.Я написал приложение, которое пыталось сделать это, и у меня было множество откатов.
Я пытался (в значительной степени по порядку):
- UIA.TextPattern
- Internet Explorer-специфический (это было различные реализации для IE 6,7,8,9)
- Специфичный для Adobe Reader
- Буфер обмена
Это охватывало 80-90% приложений, но было немало, которые все еще не работали.
Обратите внимание, что восстановление буфера обмена имеет свои проблемы;некоторые приложения (Office и т. д.) помещают информацию о поставщике в буфер обмена, который может иметь указатели на внутренние данные;когда вы помещаете свою собственную информацию в буфер обмена, внутренние данные освобождаются, а когда вы кладете старые данные обратно, буфер обмена теперь указывает на освобожденные данные, что приводит к сбоям.Вы можете обойти эту проблему, просто сохранив / восстановив известные форматы буфера обмена, но опять-таки, это приводит к странному поведению в том, что приложения ведут себя «неправильно» вместо того, чтобы падать.