当浏览器耗尽时,我需要调用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");有没有人有任何关于如何使其工作的建议?搜索结果为零。
发布于 2010-08-18 05:26:02
我有几个想法:
您是否尝试过将自动Communicator对象设置为var,然后设置断点并深入研究生成的水合对象?您可能会在对象上找到一些方法或属性,您可以使用它们来实现某些事情。
有一个描述Office Communicator SDK的博客here,并且有一些示例项目。我认为您可以在OOB应用程序中包含SDK程序集,并使用Microsoft提供的SDK自动执行Communicator。
发布于 2010-08-18 18:52:23
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程序集。
https://stackoverflow.com/questions/3506956
复制相似问题