Метод SendKeys.Send()
работает не во всех ситуациях, потому что метод Send()
может быть адресован другому элементу управления !
В 2020 году лучшее решение, чтобы быть уверенным на 100%, — это использовать функцию SendMessage().
В VB.Net я использую следующий код
Public Declare Auto Function SendMessage Lib "user32.dll"
( ByVal hWnd As IntPtr
, ByVal wMsg As Int32
, ByVal wParam As Int32
, ByVal s As Int32
) As Int32
Private Const WM_CHAR As Int32 = &H102
SendMessage(txtInput.Handle, WM_CHAR, AscW(sValue.Chars(0)), 0)
Где txtInput
— образец Textbox
элемента управления.
В моем случае я нажимаю на элемент html <div>
, определенный в элементе управления WebView
, который меняет цвет, когда я нажимаю на него или когда перемещаю мышь. Когда я нажимаю на этот <div>
, вызывается метод ScriptNotify() VB.Net для ввода некоторых символов в Textbox
с помощью функции SendMessage()
.
Я думаю, что в старом решении иногда WebView
получает фокус до вызова метода SendKeys.Send()
, поэтому распространяемый ключ не отправляется в txtInput
Textbox.
Вы можете использовать старое решение, но будьте уверены, что однажды функция SendKeys.Send() отправит то, что вы хотите, другому дескриптору.
person
schlebe
schedule
05.05.2020