我有一个 Outlook 插件(Office 2013),其主要作用是打开一个包含 WebBrowser 的 WPF 窗口,该窗口嵌入了特定的业务 Web 应用程序。我已经解决了 WPF WebBrowser 没有收到特定击键(如 enter、delete、ctrl+c、ctrl-v 等)的几个问题。然而,这已通过此处描述的方法成功处理:https ://blogs.msdn.microsoft.com/ vsod/2010/04/08/using-shortcut-keys-to-call-a-function-in-an-office-add-in/。
这些问题至少是一致的。我面临的最后一个与空格键有关。一般来说,空格的处理方式与其他字母数字键类似,并且不需要拦截。然而,这并非在所有情况下都是正确的。每当用户将 Outlook 重点放在特定的电子邮件上(通过重点我并不是指在导航窗格中选择电子邮件,而是单击右侧主窗格中的电子邮件正文),然后 Outlook 使用空格键作为导航快捷方式。这样用户就可以浏览电子邮件内容并切换到下一封电子邮件。
当用户关注右窗格后会出现问题,打开我的 Addin WPF 窗口并使用 HTML 框提供包含空格的文本。在那种状态下,Outlook 仍在下方的 Outlook Explorer 中导航,“窃取”空格键,即使 WPF 窗口是活动的,而不是 Outlook Explorer。这意味着 Web App 永远不会收到空间。只有当用户从当前电子邮件“失去焦点”时,即使单击导航窗格中当前显示的电子邮件,Outlook 似乎也会释放对空格键的所有权,并且它会再次按预期工作。
我看到该问题的 2 个潜在解决方案:
每当激活 Addin WPF 窗口时,强制 Outlook 资源管理器从右主窗格中当前显示的电子邮件中释放焦点。我还没有找到实现它的方法。
拦截空间并触发预定义的javascript方法注入空间。然而这很棘手,因为在空格键正常工作的情况下,我的插件会收到 2 个空格 - 一个是通过简单地接收空格键命中,第二个是通过注入。
任何想法如何解决这个问题?
干杯