2

Мне нужно вызвать офисный коммуникатор, чтобы создать окно чата и телефонный звонок непосредственно из Silverlight при запуске браузера. При работе в браузере я это сделать, и он работает довольно хорошо:Вызов офисного коммуникатора через 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

Пара мыслей:

Вы пытались сделать автоматизированный Коммуникатор объект в вар, затем установить контрольную точку и копаться в результате гидратированного объекта? Вы можете найти некоторые методы или свойства объекта, который вы можете использовать, чтобы все произошло.

Существует блог here, который описывает SDK Office Communicator и содержит несколько примеров проектов. I думаю, вы можете включить сборки SDK в приложение OOB и автоматизировать Communicator с помощью предоставленного Microsoft SDK.

+0

Я попробовал трюк «var», но он устанавливает его как автоматизацию, которая в основном возвращается к динамике. –

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#). Если вам это нужно, я бы предложил открыть сборку CommunicatorAPI.dll в Reflector.