2

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

これを機能させる方法について何か提案はありますか? 検索結果はゼロです。

4

2 に答える 2

0

いくつかの考え:

自動化されたCommunicatorオブジェクトを変数にしてから、ブレークポイントを設定して、結果のハイドレイトオブジェクトを掘り下げてみましたか?物事を実現するために使用できるオブジェクトに、いくつかのメソッドまたはプロパティが見つかる場合があります。

Office Communicator SDKについて説明し、いくつかのサンプルプロジェクトがあるブログがここにあります。SDKアセンブリをOOBアプリに含め、Microsoftが提供するSDKを使用してCommunicatorを自動化できる可能性があると思います。

于 2010-08-17T21:26:01.940 に答える
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 で開くことをお勧めします。

于 2010-08-18T10:52:22.757 に答える