CefSharp.Winform - дублирующая клавиша ввода при отправке в веб-форму управления вводом - PullRequest
0 голосов
/ 29 апреля 2019

CefSharp 73.1.120-pre01 (более старая версия также затронула) x64, Win10, WinForms

Я использую CefSharp.WinForm для «размещения» простого приложения Angular с небольшим количеством элементов управления вводом.Из-за необходимости сопоставления некоторых клавиш на клавиатуре я использую IKeyboardHandler (OnPreKeyEvent).

Когда я возвращаю "true" из OnPreKeyEvent (bool), я могу подавить изначально нажатую клавишу, НО вместо того, чтобы возвращать только одну ""преобразованное значение" он возвращает дублированное новое значение в элемент управления вводом через Интернет.

Простой вариант использования

  1. Я нажимаю "a" в управлении вводом

2.MyKeyHandler, который реализует метод IKeyHandler (OnPreKeyEvent), вводит свой код:

Для отправки нового ключа я использовал KeySend (Sys.Win.Form.SendKeys):

KeySend.SendWait ("{s}")

или пакет Nuget InputSimulatorPro:

InputSimulator sim = new InputSimulator ();sim.Keyboard.KeyDown (WindowsInput.Native.VirtualKeyCode.VK_S);

3.Элемент управления веб-ввода получает 2 значения символа "s".

Я пробовал комбинации SendKey.Flush / Thread.Sleep, но ничто не влияет - я всегда получаю 2 значения OUT.

Пример кода (Конец-> Tab) <- возвращает 2 вкладки (это смещает один веб-элемент управления больше, чем следует) </p>

public bool OnPreKeyEvent(IWebBrowser browserControl, IBrowser browser, KeyType type, int windowsKeyCode, int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey, ref bool isKeyboardShortcut)
    { 
     if (windowsKeyCode == 0x23) //End > Tab
        {
            SendKey.SendWait("{TAB}");

            return true;
        }

ЛЮБАЯ помощь будет принята с благодарностью.

...