SendKeys
отправляет только комбинации клавиш в активное окно .
Так что, если ваше приложение C # вызывает функцию SendKeys
в нужное времякогда пользователь сфокусирован на текстовом поле другого приложения, все будет работать нормально.
Проблема, конечно, в том, что реальный мир редко бывает таким идеальным.Вы не знаете точно, когда пользователь сфокусирует внимание на другом приложении, и, конечно, не узнаете, щелкнули ли они в элементе управления textbox.У пользователя также не будет никакого способа сообщить вашему приложению C # , когда отправить текст (например, нажав кнопку), потому что для нажатия кнопки ваше приложение должен иметь фокусировку на переднем плане, и поэтому не приложение, которое вы хотите получать с клавиатуры.
И это только краткий обзор некоторых потенциальных проблемвы столкнетесь при попытке сделать автоматизацию пользовательского интерфейса таким образом.Это чрезвычайно хрупко, и может легко привести к неожиданному, разъяренному поведению для пользователя.Я настоятельно рекомендую против этого.Гораздо лучшим вариантом является непосредственное общение с другим приложением, например, отправка ему сообщений, а не попытка инвазивного управления его пользовательским интерфейсом.
Если вы абсолютно должны сделать это, несмотря на все рекомендациинаоборот, лучший способ - получить дескриптор окна, в которое вы хотите отправить текст, а затем отправить WM_SETTEXT
сообщение .Это, конечно, потребует от вас P / Invoke нескольких функций из Win32 API.См. ответы на этот вопрос для примера кода.