【问题标题】:Issue With CefSharp Browser SendKeysCefSharp 浏览器 SendKeys 的问题
【发布时间】:2026-02-07 02:40:01
【问题描述】:

我正在使用 chromium 浏览器来自动执行一些任务。

基本上我想加载图片,我必须点击网页上的“添加图片”锚标签。

所以我不能直接点击它,不知道为什么当其他人使用相同的代码时。但我设法将重点放在那个锚标签上,但发送:

 KeyEvent k = new KeyEvent();
 k.WindowsKeyCode = 9;  // TAB KEY
 browser.GetBrowser().GetHost().SendKeyEvent(k); 
 //browser = ChromiumWebBrowser browser;

上面的工作非常好,因为我看到它来到了正确的锚标记。

现在我做:

 KeyEvent k = new KeyEvent();
 k.WindowsKeyCode = 13;   //ENTER KEY
 browser.GetBrowser().GetHost().SendKeyEvent(k);

要模拟回车键,但是没有任何反应,但是如果我在关键字上手动按“回车”,它工作正常,所以为什么上面的行为与我点击“回车键”不同

任何建议。

【问题讨论】:

    标签: c# winforms cefsharp


    【解决方案1】:

    我这样使用你的代码,它对我有用。

    KeyEvent k = new KeyEvent();
    k.WindowsKeyCode = 0x0D;
    k.FocusOnEditableField = true;
    k.IsSystemKey = false;
    k.Type = KeyEventType.Char;
    Browser.GetBrowser().GetHost().SendKeyEvent(k);
    

    【讨论】:

    • 嘿,谢谢!如果我想用一个字符替换设置 HEX 值,这可能吗?也很想区分“d”(68)和“D”(100)。
    【解决方案2】:

    花了这么多时间,但发现接受的答案对深入了解这一点很有用:

    KeyEvent k = new KeyEvent
    {
        WindowsKeyCode = 0x0D, // Enter
        FocusOnEditableField = true,
        IsSystemKey = false,
        Type = KeyEventType.KeyDown
    };
    
    _browser.GetBrowser().GetHost().SendKeyEvent(k);
    
    Thread.Sleep(100);
    
    k = new KeyEvent
    {
        WindowsKeyCode = 0x0D, // Enter
        FocusOnEditableField = true,
        IsSystemKey = false,
        Type = KeyEventType.KeyUp
    };
    
    _browser.GetBrowser().GetHost().SendKeyEvent(k);
    
    Thread.Sleep(100);
    

    注意KeyEventType.KeyDown,然后发送KeyEventType.KeyUp

    灵感来自 CEF Simulate Mousedown and KeysendCefSharp webpage element click

    【讨论】:

    • 嘿,谢谢!如果我想用一个字符替换设置 HEX 值,这可能吗?也很想区分“d”(68)和“D”(100)