Lync对话窗口窃取焦点没有UISuppression

时间:2014-02-19 16:16:48

标签: c# wpf lync

使用与Lync Client集成的WPF应用程序,但不替换Lync Client或使用UISupression。

当有来电时,用户可以使用点击或功能键通过我们的应用程序接听电话。问题是,在回答呼叫后,Lync会生成一个会话窗口,该窗口会将焦点从我们的应用程序中移开。这是一个问题,因为用户可能按下的任何功能键(例如将呼叫置于保持状态)将转到Lync Conversation窗口,而不是此应用程序。

我见过this Microsoft article,它允许你获取对话窗口并停靠它们,这似乎是一个可行的解决方案,除了我们的应用程序真的没有空间来托管这些窗口。

如果Lync Client Conversation窗口从我们的应用程序中获取焦点,我们可以采取哪些措施来防止或解决此问题?

4 个答案:

答案 0 :(得分:1)

我说对接肯定是要走的路。您可以创建一个表单作为应用程序的一部分,但与主应用程序UI分开,以将对话窗口停靠。你可以给它一个像素边框,或者完全隐藏边框,这样Lync对话窗口就不会像其停靠一样看起来 - 用户不应该注意到停靠窗口和非停靠窗口之间的任何差异。这种方法的好处是,您不需要将任何主要应用程序的UI空间用于托管对话窗口。

需要注意的一件事 - 如果您正在使用Lync 2013,这种方法的一个潜在问题是,停靠会话窗口会将其从标签式会话视图中拉出来 - 但如果您这样做,这可能不是问题#39;仅处理音频呼叫,因为默认情况下它们会从标签式会话视图中退出。

答案 1 :(得分:0)

答案 2 :(得分:0)

鉴于对话窗口存在问题:“Lync会生成一个窃取焦点的对话窗口” - 考虑创建自己的对话窗口,如下所述:

Building Lync IM Conversation Windows

答案 3 :(得分:0)

这有点像黑客,但你可以将ConversationWindow移到屏幕边界之外。

假设有多个监视器,

Screen[] screenArray;
screenArray = Screen.AllScreens;
cw = LyncClient.GetAutomation().GetConversationWindow(lyncConversation);
cw.Move((screenArray[0].Bounds.Left - cw.Width), (screenArray[0].Bounds.Top - cw.Height));

对于焦点问题,在上述移动完成之前不要初始化应用程序,你应该没问题。