質問

Office Communicator 2007の「自動メッセージ」アドインを開発していますが、別のユーザーがIMウィンドウ(私ではなく、別のユーザー)を開くかどうかを識別する方法を知る必要があります。

次のイベントがあります:

private void communicator_OnIMWindowCreated(object pIMWindow)
{                     
    if ((chk_Enabled.Checked))
    {                
        IMessengerConversationWndAdvanced imWindow = pIMWindow as IMessengerConversationWndAdvanced;
        imWindow.SendText(TxtAutoMessage.Text);
    }
}

方法はありますか?ありがとう!

役に立ちましたか?

解決

残念ながら、Communicator Automation APIはこれを直接サポートしていません。私が見つけた唯一の回避策には、トラップが含まれます OnIMWindowContactAdded イベント。

あなたが始めた会話のために、次のイベントがこの順序で発砲します:

  • OnIMWindowCreated
  • OnIMWindowContactAdded (あなた自身のための)
  • OnIMWindowContactAdded (他の参加者のために)

別の参加者が始めた会話のために、次のイベントがこの順序で発砲します。

  • OnIMWindowCreated
  • OnIMWindowContactAdded (他の参加者のために)

そのため、参加者が会話を開始したとき、あなたは自分が連絡先として追加されているとは思わない。

これを次のように使用できます

  • トラッピングで OnIMWindowCreated, 、ウィンドウハンドルを保存します(pIMWindow.HWND)辞書で(したがって、複数の会話ウィンドウを処理できます)
  • トラッピングで OnIMWindowContactAdded, 、辞書のハンドルを探します。これがウィンドウに見た最初の追加イベントである場合、ルールは次のとおりです。連絡先があなたです(あなた)IsSelf)、それからあなたは会話を始めました。それ以外の場合、別の連絡先が会話を開始しました。

それは最も満足のいく解決策ではありません(自動化APIを使用するときは決してありません; o)が、そこに到達するはずです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top