Я, конечно, согласен с заявлением Дока Брауна о том, что вы говорите о написании приложения, а не о контроле. Также согласитесь с его утверждением о том, что вам нужно предоставить больше информации: как именно ваше приложение взаимодействует с этими другими приложениями, которые обрабатывают (мы предполагаем) неформатированный (один шрифт, один стиль, один размер) текст?
Если вы должны сделать это в C #, вам нужно будет использовать что-то вроде «глобальной ловушки», чтобы пользователь мог в любое время, с помощью специальной клавиатуры, активировать ваше приложение; о том, как это сделать в C #, см .: Статья Джорджа Мамаладзе «Обработка глобальных мышиных и клавиатурных хуков в C #»
Это также требует, однако, чтобы ваше приложение работало постоянно; обычно, если вы хотите, чтобы что-то работало постоянно, вы можете захотеть, чтобы ваше приложение было службой Windows. «Ненавязчивое» взаимодействие с любым конкретным «необработанным» приложением для обработки текста может включать в себя некоторые вещи API и / или использование старых «SendKeys», а также глубокие знания приложения: я думаю, вы не захотите "иди туда".
Скорее всего, вы захотите каким-то образом использовать буфер обмена как «средство обмена» между вашим приложением (или службой) и другими приложениями. Здесь много примеров в SO и CodeProject о том, как использовать буфер обмена в .NET и / или перетаскивать выборки в тексте между приложениями.
Удачи!