2

當用完瀏覽器時,我需要調用辦公室通信器直接從Silverlight創建聊天窗口和電話。當在瀏覽器中運行我做到這一點,它工作得很好:通過Silverlight通過瀏覽器呼叫Office Communicator

System.Windows.Browser.HtmlPage.Window.Eval(String.Format("window.open(\"sip:{0}\", target=\"_self\");", sip)); 

當在瀏覽器外,據我已經得到了運行通過動態調用Communicator.UIAutomation但老實說,我不知道該怎麼接下來做。

dynamic communicator = AutomationFactory.CreateObject("Communicator.UIAutomation"); 

任何人有任何建議,如何使這項工作?搜索已經達到零結果。

回答

0

一對夫婦的想法:

您是否嘗試過做自動化通訊對象一個變種,然後設置一個斷點,並深入挖掘造成脫水對象?您可以在對象上找到一些方法或屬性,以便使事情發生。

有一個博客here描述了Office Communicator SDK並且有一些示例項目。 I 認爲您可能可以將SDK程序集包含在您的OOB應用程序中,並使用Microsoft提供的SDK自動化Communicator。

+0

我嘗試了「var」技巧,但它將它設置爲自動化,基本上回到了動態。 – 2010-08-17 22:05:07

0

SDK必須預先安裝在用戶機器上。沒有簡單的方法將其部署在Silvelright OOB應用程序中。

您將需要SDK

您可以在這裏查看文檔以獲取更多詳細信息:C:\ Program Files(x86)\ Microsoft Office Communicator \ SDK \ OCSDK.chm 它主要是指C#,但其中大部分可以輕鬆移植到Com Automation 。作爲一個例子看看下面的代碼開始對話

dynamic comm = new ActiveXObject("Communicator.UIAutomation"); 
dynamic msgrAdv = comm.IMessengerAdvanced; 
if(msgrAdv!=null) 
{ 
    try 
    { 
     object obj = msgrAdv.StartConversation(
        1, //CONVERSATION_TYPE.CONVERSATION_TYPE_IM, 
        sipUris, // object array of signin names 
        null, 
        "Testing", 
        "1", 
        null); 
     windowHandle = long.Parse(obj.ToString()); 
    } 
    catch (COMException ex) 
    { 
     this.writeToTextBox(
       formReturnErrors.returnComError(ex.ErrorCode) 
    ); 

} 

我希望這可以幫助。注意到從幫助文件中的示例中,我更改了.NET Assembly中定義的一些成員(不能從您的C#代碼中引用)。如果你需要這個,我會建議在Reflector中打開CommunicatorAPI.dll程序集。