CefSharp.Winform-发送到Web表单输入控件时重复输入键盘键

时间:2019-04-29 12:43:33

标签: c# cefsharp chromium-embedded

CefSharp 73.1.120-pre01(旧版本也受到影响) x64,Win10,WinForms

我使用CefSharp.WinForm来“托管”带有少量输入控件的简单Angular应用程序。由于需要将一些键盘按键映射到其他键盘按键,因此我使用了IKeyboardHandler(OnPreKeyEvent)。

当我从OnPreKeyEvent(布尔)返回“ true”时,我能够抑制最初按下的键,而不是仅返回一个“转换的”值,而是将重复的新值返回到Web输入控件。

简单用例

  1. 我在输入控件中按“ a”

2。 实现IKeyHandler(OnPreKeyEvent)方法的MyKeyHandler在其代码后面输入

我使用KeySend(Sys.Win.Form.SendKeys)发送新密钥:

KeySend.SendWait(“ {s}”)

或InputSimulatorPro Nuget软件包:

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

3。 Web输入控件接收2个值的“ s”字符。

我尝试了SendKey.Flush / Thread.Sleep组合,但没有任何影响-我总是得到2个值OUT。

示例代码(“结束”->“选项卡”)<-返回2个选项卡(它会使一个Web控件的移动超出其应有的范围)

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;
        }

任何帮助将不胜感激。

0 个答案:

没有答案