Отправка сообщения в любое текстовое поле 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 всегда нацеливается на текущий активный элемент управления (как если бы пользователь печатал прямо на клавиатуре), поэтому вам не нужно заботиться о поиске дескрипторов окон или заголовков.

Другие вопросы по тегам