2

Je dois appeler Office Communator pour créer une fenêtre de discussion et un appel téléphonique directement depuis Silverlight lorsque le navigateur est épuisé. Lors de l'exécution dans le navigateur, je le fais et il fonctionne assez bien:Appel de Office Communicator via Silverlight Out of Browser

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

Lors de l'exécution de navigateur pour autant que je l'ai obtenu est d'invoquer la Communicator.UIAutomation par une dynamique, mais honnêtement, je ne sais pas quoi faire ensuite.

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

Quelqu'un a des suggestions sur la façon de faire ce travail? La recherche n'a donné aucun résultat.

Répondre

0

A pensées couple:

Avez-vous essayé de faire l'objet Communicator automatisé un var, puis définir un point d'arrêt et de creuser dans l'objet hydraté résultant? Vous pouvez trouver des méthodes ou des propriétés sur l'objet que vous pouvez utiliser pour faire bouger les choses.

Un blog here décrit le kit de développement logiciel d'Office Communicator et contient des exemples de projets. I pense vous pourriez être en mesure d'inclure les assemblys SDK dans votre application OOB et d'automatiser Communicator en utilisant le SDK fourni par Microsoft.

+0

J'ai essayé l'astuce "var" mais je l'ai définie comme une automatisation qui est redevenue dynamique. –

0

Le SDK doit être préinstallé dans les machines utilisateur. Il n'y a pas de moyen facile de le déployer le long de votre application Silvelright OOB. Vous aurez besoin de SDK.

Vous pouvez vérifier la documentation pour plus de détails ici: C: \ Program Files (x86) \ Microsoft Office Communicator \ SDK \ OCSDK.chm Il se réfère principalement à C#, mais la plupart de celui-ci pourrait facilement être porté à Com Automation . À titre d'exemple, regardez le code suivant pour commencer une conversation

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) 
    ); 

} 

J'espère que cette aide. J'ai remarqué que de l'exemple dans le fichier d'aide, j'ai changé certains des membres qui sont définis dans l'assembly .NET (qui ne peut pas être référencé à partir de votre code C#). Si vous en avez besoin, je suggère d'ouvrir l'assembly CommunicatorAPI.dll dans Reflector.