Office Communicator:IMウィンドウの開口部を識別する方法
-
09-10-2019 - |
質問
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)が、そこに到達するはずです。
所属していません StackOverflow