во-первых, это не дубликат, мой случай очень конкретный, я просмотрел ответы здесь и опробовал их, они, похоже, не работают, по крайней мере, в моем случае.
У меня проблема:
- У меня есть одно приложение C # WinForms, которое содержит форму с элементом управления webBrowser.
- Мне нужна форма для отправки нажатий клавиш VIA SendMessage WinAPI в элемент управления webBrowser,так что элемент управления обрабатывает их правильно и запускает все связанные события JS на отображаемой странице.
- Я делаю стандартную вещь SendMessage, но я подозреваю, что проблема заключается в том, что я поставляю webBrowser.Handle как HWND для SendMessage, может быть?
Для простоты я просто делаю:
- webBrowser.Navigate ("https://www.google.com")
- тогда я нахожуокно ввода поиска с помощью webBrowser.Document.GetElementsByTagName и некоторой фильтрации. Это работает правильно, потому что тогда я вызываю element.Focus (), который корректно фокусирует мой курсор в поле поиска
- ТО я использую SendMessage (также пробовал PostMessage) для отправки Keys.M в webBrowser.Handle HWND.
- Функция работает правильно и возвращает 0 (без ошибок), но нажатие клавиш не обрабатываетсяи буква не появляется в поле ввода страницы.
ДА, мне абсолютно определенно необходимо использовать какое-то моделирование ввода, потому что я хочузапустить автоматическую обработку, которую webBrowser выполняет для фактических нажатий клавиш, чтобы он запускал все связанные функции JS, прикрепленные на странице.
ДА, я абсолютно точно определенно нуждаюсь в этомэто работает, даже когда окно получателя свернуто, и когда на компьютере происходит фактический пользовательский ввод.Если кто-то на самом деле не отобразит окно получателя и не начнет щелкать и вводить текст внутри него, ни один фактический ввод на компьютере не должен мешать работе моего приложения.
ДА, у меня есть оба этих окна, поскольку они оба в моем собственном приложении.
Я подозреваю, что проблема в том, что в настоящее время это фактически одно окно?Форма содержит элемент управления webBrowser, и форма отправляет SendMessage в элемент управления webBrowser, используя его свойство .Handle.
Я собираюсь попытаться разделить их на две формы, однако я подозреваю, что это тоже не сработаетпоэтому я заранее спрашиваю какие-либо советы и предложения о том, как заставить его работать.
Является ли проблема отправкой сообщения на дескриптор, принадлежащий конкретному элементу управления в окне?
Или ... есть идеи?Любые предложения о том, что нужно остерегаться?Или как сделать это лучше?