Почему c# WebBrowser элемент управления получает на jQuery событий keydown, а не нажатие до нажав ручного управления?
Я могу придумать пример кода, если это необходимо,но еще не сделал этого.
В общем, хотя я очень смущен, как моя настройка глобальной горячей клавиши в коде C# / .NET (с использованием вызовов PInvoke win32), которая при срабатывании открывает форму, имеющую только элемент управления webbrowser + вызовы (в методе forms _Load() ):
этот.BringToFront();
этот.Активировать();
этот.Сосредоточить();
метода webbrowser1.Сосредоточить();
этот.ActiveControl = webBrowser1;
webBrowser1. документ.InvokeScript ("document. getElementsByTagName ('div') [0]. focus();");
это приводит к тому, что форма отображается + реагирует на ключевые события из обработчика jQuery keydown, но обработчик нажатия клавиш jQuery не работает до тех пор, пока я обычно не щелкаю мышью по элементу управления браузером.
На данный момент я справился с этим с помощью перегруженного метода ProcessCmdKey() для формы, чтобы вызвать метод JS веб-браузера и ввести набранный текст таким образом, но это уродливо, как с тем, как трудно обнаружить символ для таких клавиш, как -,!,@,... (в настоящее время они просто не работают)
Я даже пробовал в javascript делать window. addEventListener ("нажатие клавиши",...
и все же это событие не наступает до тех пор, пока я не нажму на элемент управления веб-браузером, как правило, если я не нажму его вручную.
Правда, не каждый раз. Я заметил, что мне кажется, что если бы мой рабочий стол был активен, например, сразу после нажатия значка рабочего стола, а затем выполнения последовательности горячих клавиш, то событие нажатия клавиши работает правильно. Но, похоже, если бы у меня была какая-то другая программа, активная, когда произошла последовательность горячих клавиш, то всплывающая форма появляется, и работает только событие keydown.
Очень запутанный.
Есть идеи, как исправить так, чтобы можно было использовать событие нажатия клавиши javascript?
Спасибо!
Что я уже пробовал:
Началось с:
этот.Сосредоточить();
метода webbrowser1.Сосредоточить();
работа до:
этот.BringToFront();
этот.Активировать();
этот.Сосредоточить();
метода webbrowser1.Сосредоточить();
этот.ActiveControl = webBrowser1;
webBrowser1. документ.InvokeScript ("document. getElementsByTagName ('div') [0]. focus();");
Также началось с jQuery 3.1.1 $(document).нажатие клавиши() обработчик и работал мой путь ниже, к окну.метод addEventListener("нажатие", функция(е){...
Я реализовал некоторый код pinvoke для имитации щелчка мыши, но он, похоже, не работает правильно, если я буквально не перемещаю положение курсора, а это очень неудобно для опубликованного продукта.
На данный момент использование перегруженной функции forms ProcessCmdKey() обрабатывает ввод текстовых клавиш, пробел и backspace, но неудобно пытаться обрабатывать больше клавиш, таких как версия shift чисел (!,@,#,$,%,^....)