我正在构建一个暴露自定义任务窗格的Outlook加载项。在此窗格中执行一些用户操作,
一切都很好,除了Outlook剔除Delete / Back / Tab键(并且我确定还有更多),从被传递到控件。
在此UserControl中,我启动了一个内部站点,要求用户执行登录。 WebBrowser接受常规输入,但在按下Tab / Delete / Back键时不执行任何操作!
我在我的智慧结束!我一直在网上搜索几个星期,似乎不知道发生了什么。
有谁知道这里发生了什么以及如何解决?我已经实现了一个低级键盘钩子,并能够捕获所需的键。我尝试过使用User32.PostMessage,但仍然没有运气。
谢谢, 戒日
p.s:我来自Java背景,所以当谈到.NET& S时,我有点新手。 P /调用。
答案 0 :(得分:2)
WebBrowser控件使用DLGC_WANTARROWS响应WM_GETDLGCODE消息。 DLGC_WANTCHARS。这就是为什么它不会处理某些键,如Tab,Back和Delete。它告诉父母不要处理这些钥匙。
你可以编写一个Windows钩子,然后调用webbrowser控件的IOleInPlaceActiveObject :: TranslateAccelerator实现。
查看1999年4月微软互联网开发人员Scott Roberts的“WebBrowser击键问题”,了解更多详情。