我可以将键盘快捷键转发到停靠在 WPF 窗口中的 lync 对话窗口吗

Posted

技术标签:

【中文标题】我可以将键盘快捷键转发到停靠在 WPF 窗口中的 lync 对话窗口吗【英文标题】:Can I forward keyboard shortcuts to a lync conversation window docked in a WPF window 【发布时间】:2013-10-19 16:08:22 【问题描述】:

我正在使用 Lync 2013 SDK 和 WPF,以向 Lync 对话窗口添加工具栏。

我确实按照本教程 http://msdn.microsoft.com/en-us/library/lync/jj933086.aspx 将 Lync 对话窗口停靠在 WindowFormHost 内的面板中。

现在我可以在 WPF 窗口中添加自定义功能。

问题在于,停靠对话会导致所有 Lync 对话窗口快捷方式以一种奇怪的方式运行。默认情况下,它们不再起作用,即使我尝试聚焦停靠的对话窗口,它们仍然不起作用,但是当我聚焦该窗口的控件时,它们又会重新开始工作。

我需要他们处理我的 WPF 窗口或停靠的 Lync 对话窗口中关注的任何内容。

我尝试使用一些 user32.dll 函数通过对话窗口句柄 IntPtr 调用这些快捷方式,但它不起作用。

我也试过

SetForegroundWindow(_automation.GetConversationWindow(convertion).Handle)

然后使用

SendKeys.SendWait(keys)

但它仅在对话未停靠时才有效。

【问题讨论】:

【参考方案1】:

我们在我正在进行的一个项目中遇到了这个问题。我认为问题在于当窗口失焦时快捷方式被取消注册。我们必须重新注册与该窗口相关的快捷方式。不过我不确定你的快捷方式是如何注册的。

【讨论】:

以上是关于我可以将键盘快捷键转发到停靠在 WPF 窗口中的 lync 对话窗口吗的主要内容,如果未能解决你的问题,请参考以下文章

WPF虚拟键盘如何不获得当前焦点

WPF 中的键盘快捷键

WPF 应用程序 - 拖动到屏幕末尾时添加停靠行为

我可以在不使用 winformshost 的情况下将 Lync SDK 对话停靠在 WPF 上吗?

C# WPF - 顶部和底部停靠但可扩展的中间部分

在最小化到停靠后恢复 Qt 应用程序,使用 OS X 上的停靠快捷方式