我需要调用办公室通讯器,以便在浏览器用完时直接从Silverlight创建聊天窗口和电话。在浏览器中运行时,我这样做并且效果很好:
System.Windows.Browser.HtmlPage.Window.Eval(String.Format("window.open(\"sip:{0}\", target=\"_self\");", sip));
据我所知,当浏览器耗尽时,通过动态调用Communicator.UIAutomation,但老实说,我不知道接下来该做什么。
dynamic communicator = AutomationFactory.CreateObject("Communicator.UIAutomation");
任何人对如何使这项工作有任何建议?搜索结果为零。
答案 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程序集。