2014-02-19 50 views
1

使用與Lync Client集成但未替換Lync Client或使用UISupression的WPF應用程序。Lync對話窗口竊取焦點沒有UISuppression

當來電時用戶可以通過我們的應用程序使用單擊或功能鍵來應答呼叫。問題是,在應答呼叫之後,Lync會生成一個會話窗口,該窗口會將焦點從我們的應用程序中竊取。這是一個問題,因爲用戶可能按下的任何功能鍵(例如,將呼叫置於保留狀態)將轉到Lync對話窗口,而不是此應用程序。

我見過this Microsoft article,它允許你獲得對話窗口並停靠它們,這似乎是一個可行的解決方案,除了我們的應用程序真的沒有空間來託管這些窗口。

我們能做些什麼來防止或解決Lync客戶機對話窗口從我們的應用程序竊取焦點的問題?

回答

0
+0

無法做什麼?如果有必要,我正在尋找任何工作,甚至是黑客。 – HK1

+0

如果您閱讀文章它聲明,這是不可能的沒有使用UISuppression方法的lync窗口將成爲活動窗口你可以做的是通過調用方法設置調用窗口爲活動,然後執行this.show() 或通過使用Form.TopMost = True –

+0

根據我鏈接到的文章試驗對接。我認爲它可能工作,雖然我只設置了一個測試應用程序,就像那篇文章正在顯示的那樣,這還不夠我知道。我們的想法是,我們將把這些窗口推到我們自己的Windows中,讓我們有更多的控制權。 – HK1

1

我想說的對接肯定是要走的路。您可以創建一個表單作爲應用程序的一部分,但與主應用程序UI分離,以將對話窗口停靠到該窗口中。你可以給這個單個像素邊框,或者完全隱藏邊框,所以Lync對話窗口不會看起來就好像它已經停靠了一樣 - 用戶不應該注意到停靠窗口和非停靠窗口之間的區別。這種方法的好處在於,您不需要將任何主應用程序的用戶界面空間用於託管對話窗口。

需要注意的一件事 - 如果您使用的是Lync 2013,則此方法的潛在問題是對接對話窗口會將其從標籤對話視圖中拉出 - 但這可能不會成爲問題,只能處理音頻呼叫,因爲默認情況下這些呼叫會從標籤式會話視圖中拉出。

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)); 

對於重點問題,直到上面的動作做不初始化該應用程序,你應該罰款。