Отправка сообщения в любое текстовое поле Windows просто по фокусу
Мне нужно знать, как я могу отправить сообщение в любое текстовое поле Windows.
Если в фокусе текстовое поле Google Chrome URL, то я "автоматически вставлю" сообщение, или если я фокусирую строку документа Word, или блокнот, или что-нибудь еще!
Я получил код для отправки, установив iHwnd, findwindow и findwindowex, но мне нужно установить любое время, когда я захочу изменить конечную программу, и поэтому мне нужна автоматическая программа, "основанная на фокусе".
Вот что у меня так далеко...
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim iHwnd As IntPtr = FindWindow("notepad", vbNullString)
Dim iHwndChild As IntPtr = FindWindowEx(iHwnd, IntPtr.Zero, "Edit", vbNullString)
SendMessage(iHwndChild, WM_SETTEXT, 0, "Hello World!")
End Sub
Извините за мой плохой английский!
1 ответ
SendMessage
всегда будет требовать определенного дескриптора окна или широковещательной рассылки на все окна верхнего уровня. Чтобы продолжить работу с текущим кодом, вы можете сначала попытаться получить дескриптор активного окна с помощью GetActiveWindow или аналогичной функции.
Кроме того, вы можете поэкспериментировать с классом SendKeys для отправки вашего текста. SendKeys
всегда нацеливается на текущий активный элемент управления (как если бы пользователь печатал прямо на клавиатуре), поэтому вам не нужно заботиться о поиске дескрипторов окон или заголовков.