我正在为Office Communicator 2007开发一个“自动消息”插件,但我需要知道如何识别其他用户(不是我,而是另一个用户)是否打开IM窗口。
我有以下事件:
private void communicator_OnIMWindowCreated(object pIMWindow)
{
if ((chk_Enabled.Checked))
{
IMessengerConversationWndAdvanced imWindow = pIMWindow as IMessengerConversationWndAdvanced;
imWindow.SendText(TxtAutoMessage.Text);
}
}有什么办法吗?谢谢!
发布于 2010-11-16 00:18:57
不幸的是,Communicator Automation API不直接支持这一点。我发现的唯一解决方法是捕获OnIMWindowContactAdded事件。
对于由您发起的对话,将按此顺序触发以下事件:
OnIMWindowCreatedOnIMWindowContactAdded (用于yourself)OnIMWindowContactAdded )(用于其他participant)对于由其他参与者发起的对话,将按此顺序触发以下事件:
OnIMWindowCreatedOnIMWindowContactAdded (用于其他participant)因此,当参与者发起对话时,您不会看到自己被添加为联系人。
您可以按如下方式使用它
OnIMWindowCreated,将窗口句柄(pIMWindow.HWND)存储在字典中(以便您可以处理多个对话窗口)OnIMWindowContactAdded,在字典中查找句柄。如果这是您在窗口中看到的第一个添加的事件,则规则是:如果联系人是您(IsSelf),则您启动了对话。否则,另一个联系人启动了conversation.这不是最令人满意的解决方案(当您使用Automation API时,也不是这样),但它应该能让您达到这个目标。
https://stackoverflow.com/questions/4168049
复制相似问题