CefSharp 73.1.120-pre01(旧版本也受到影响) x64,Win10,WinForms
我使用CefSharp.WinForm来“托管”带有少量输入控件的简单Angular应用程序。由于需要将一些键盘按键映射到其他键盘按键,因此我使用了IKeyboardHandler(OnPreKeyEvent)。
当我从OnPreKeyEvent(布尔)返回“ true”时,我能够抑制最初按下的键,而不是仅返回一个“转换的”值,而是将重复的新值返回到Web输入控件。
简单用例
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;
}
任何帮助将不胜感激。