办公室沟通:如何识别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);
}
}
有办法吗?谢谢!
解决方案
不幸的是,通信器自动化API不直接支持这一点。我发现的唯一解决方法涉及捕获 OnIMWindowContactAdded
事件。
对于您开始的对话,以下事件按以下顺序开火:
OnIMWindowCreated
OnIMWindowContactAdded
(为自己)OnIMWindowContactAdded
(对于其他参与者)
对于由另一位参与者开始的对话,以下活动按照此顺序开火:
OnIMWindowCreated
OnIMWindowContactAdded
(对于其他参与者)
因此,当参与者启动对话时,您不会将自己添加为联系人。
您可以按以下方式使用它
- 在陷阱上
OnIMWindowCreated
, ,存储窗口句柄(pIMWindow.HWND
)在字典中(因此您可以处理多个对话窗口) - 在陷阱上
OnIMWindowContactAdded
, ,寻找字典中的句柄。如果这是您在窗口中看到的第一个添加事件,则规则是:如果联系人是您(IsSelf
),然后您开始对话。否则,另一个联系开始对话。
这不是最令人满意的解决方案(当您使用自动化API; o)时,它们从来没有,但它应该带您到达那里。
不隶属于 StackOverflow