通过Silverlight从浏览器中调用Office Communicator

时间:2010-08-17 21:05:54

标签: c#-4.0 silverlight-4.0 silverlight-oob office-communicator

我需要调用办公室通讯器,以便在浏览器用完时直接从Silverlight创建聊天窗口和电话。在浏览器中运行时,我这样做并且效果很好:

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

据我所知,当浏览器耗尽时,通过动态调用Communicator.UIAutomation,但老实说,我不知道接下来该做什么。

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

任何人对如何使这项工作有任何建议?搜索结果为零。

2 个答案:

答案 0 :(得分:0)

一些想法:

您是否尝试过将自动Communicator对象设为var,然后设置断点并挖掘生成的水合物体?您可能会在对象上找到一些可用于实现目标的方法或属性。

有一个博客here,它描述了Office Communicator SDK,并有一些示例项目。我认为您可以将SDK程序集包含在OOB应用程序中,并使用Microsoft提供的SDK自动化Communicator。

答案 1 :(得分: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程序集中定义的一些成员(无法从C#代码中引用)。如果您需要这个,我建议在Reflector中打开CommunicatorAPI.dll程序集。