2

当浏览器用完时,我需要直接从 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");

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

4

2 回答 2

0

几个想法:

您是否尝试过将自动化 Communicator 对象设为 var,然后设置断点并深入研究生成的水合对象?您可能会在对象上找到一些可用于使事情发生的方法或属性。

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

于 2010-08-17T21:26:01.940 回答
0

SDK 必须预先安装在用户机器中。沿着您的 Silverright 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 程序集。

于 2010-08-18T10:52:22.757 回答