Как с помощью С# или С++ вставить текст в текстовое поле другого приложения? Я делал это давным-давно и вроде бы кое-что вспомнил об использовании приложений HWND. Но после этого изменения для каждого экземпляра приложения я чувствую, что не помню всей истории. Могу ли я каким-то образом получить список запущенных приложений, извлечь нужное, получить из него HWND, а затем... хм.... что потом? :)
Вставить текст в текстовое поле другого приложения
Ответы (4)
Используйте FindWindowEx(), чтобы найти дескриптор (HWND) и затем отправьте сообщение WM_SETTEXT, используя SendMessage()
При использовании FindWindowEx вам нужно будет сначала найти дескриптор главного окна, используя имя его класса. Затем вам нужно будет найти дескриптор любого контейнера, в котором находится текстовое поле, вызвав FindWindowEx, передав дескриптор родителя (окна) и имя класса контейнера. Вам нужно будет повторять это, пока не дойдете до текстового поля. Вы можете использовать инструмент под названием Spy++, который устанавливается по умолчанию. с Visual Studio, чтобы проверить целевое приложение и выяснить иерархию контейнеров (все объекты действительно называются окнами в API, но я называю их контейнерами, в отличие от окна верхнего уровня) с именами их классов.
Затем SendMessage(), WM_SETTEXT
Вместо того, чтобы ориентироваться на конкретное приложение, вы можете просто отправлять нажатия клавиш в текстовое поле.
private void button1_Click(object sender, EventArgs e)
{
System.Threading.Thread.Sleep(5000);
SendKeys.Send(send_text);
private void textBox1_TextChanged(object sender, EventArgs e)
{
send_text = textBox1.Text;
}
вы можете использовать класс ClipBoard для достижения того же