我正在为Office Communicator 2007开发一个“自动消息”加载项,但我需要知道如何识别其他用户是否打开了IM窗口(不是我,而是另一个用户)。
我有以下事件:
private void communicator_OnIMWindowCreated(object pIMWindow)
{
if ((chk_Enabled.Checked))
{
IMessengerConversationWndAdvanced imWindow = pIMWindow as IMessengerConversationWndAdvanced;
imWindow.SendText(TxtAutoMessage.Text);
}
}
有办法吗?谢谢!
答案 0 :(得分:2)
遗憾的是,Communicator Automation API不直接支持此功能。我发现的唯一解决方法是捕获OnIMWindowContactAdded
事件。
对于您开始的对话,以下事件按此顺序触发:
OnIMWindowCreated
OnIMWindowContactAdded
(为你自己)OnIMWindowContactAdded
(对于其他参与者)对于由其他参与者发起的对话,以下事件按此顺序触发:
OnIMWindowCreated
OnIMWindowContactAdded
(对于其他参与者)因此,当参与者发起对话时,您不会将自己添加为联系人。
您可以按如下方式使用
OnIMWindowCreated
时,将窗口句柄(pIMWindow.HWND
)存储在字典中(这样您就可以处理多个对话窗口)OnIMWindowContactAdded
时,查找字典中的句柄。如果这是您在窗口中看到的第一个已添加事件,则规则为:如果联系人是您(IsSelf
),则您开始对话。否则,另一位联系人开始了对话。这不是最令人满意的解决方案(他们从未使用过Automation API; o)),但它应该可以帮到那里。