gpt4 book ai didi

c# - Webbrowser 控件在放置在 Outlook 加载项中时不接收 Tab/Delete/Back 键

转载 作者:太空宇宙 更新时间:2023-11-03 11:42:15 25 4
gpt4 key购买 nike

我正在构建一个公开自定义任务 Pane 的 Outlook 加载项。从此 Pane 开始执行某些用户操作,

  1. 我创建了一个新的 UserControl(其中有一个 WebBrowser 控件)
  2. 获取 Outlook 消息窗口(使用 Win API FindWindow("rctrl_renwnd32"...) )
  3. 将消息窗口调整为 0 宽度
  4. 将我的 UserControl 的父级设置为主 Outlook 资源管理器窗口(使用 Win API User32.SetParent)
  5. 设置我的 UserControl 的大小以占据消息窗口的位置

一切都很好,除了 Outlook 将 Delete/Back/Tab 键(我确信还有更多)从传递到控件中剔除这一事实。

在此 UserControl 中,我启动了一个要求用户执行登录的内部站点。 WebBrowser 接受常规输入,但在按下 Tab/Delete/Back 键时不执行任何操作!

我已经无计可施了!我已经在网上搜索了几个星期,但似乎不知道发生了什么。

有人知道这里发生了什么以及如何解决它吗?我已经实现了一个低级键盘钩子(Hook)并且能够捕获所需的键。我试过使用 User32.PostMessage 但还是不行。

谢谢,戒日

p.s.:我有 Java 背景,所以在 .NET 和 P/Invoke 方面我是新手。

最佳答案

WebBrowser 控件用 DLGC_WANTARROWS | 响应 WM_GETDLGCODE 消息DLGC_WANTCHARS。这就是为什么它不会处理某些键,例如 Tab、Back 和 Delete。它告诉 parent 不要处理这些 key 。

您可以编写一个 Windows Hook ,然后调用 Web 浏览器控件的 IOleInPlaceActiveObject::TranslateAccelerator 实现。

查看 Microsoft Internet 开发人员 Scott Roberts 于 1999 年 4 月撰写的“WebBrowser Keystroke Problems”以了解更多详细信息。

关于c# - Webbrowser 控件在放置在 Outlook 加载项中时不接收 Tab/Delete/Back 键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4449963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com