Office Communicator: Comment identifier l'ouverture d'une fenêtre de messagerie instantanée
-
09-10-2019 - |
Question
Je développe un « message automatique » add-in pour Office Communicator 2007, mais je dois savoir comment identifier si un autre utilisateur ouvre la fenêtre de messagerie instantanée (pas moi, mais un autre utilisateur).
Je l'événement suivant:
private void communicator_OnIMWindowCreated(object pIMWindow)
{
if ((chk_Enabled.Checked))
{
IMessengerConversationWndAdvanced imWindow = pIMWindow as IMessengerConversationWndAdvanced;
imWindow.SendText(TxtAutoMessage.Text);
}
}
Est-il possible? Merci!
La solution
Malheureusement, le Communicator Automation API ne supporte pas directement. La seule solution que j'ai trouvé implique le piégeage de l'événement OnIMWindowContactAdded
.
Pour une conversation a commencé par vous, le feu des événements suivants dans cet ordre:
-
OnIMWindowCreated
-
OnIMWindowContactAdded
(pour vous) -
OnIMWindowContactAdded
(pour l'autre participant)
Pour une conversation a commencé par un autre participant, les événements suivants le feu dans cet ordre:
-
OnIMWindowCreated
-
OnIMWindowContactAdded
(pour l'autre participant)
Ainsi, lorsque les participants initiés la conversation, vous ne vous voyez pas ajouté comme contact.
Vous pouvez utiliser cela comme suit
- Le piégeage
OnIMWindowCreated
, stocker la poignée de fenêtre (pIMWindow.HWND
) dans un dictionnaire (vous pouvez gérer plusieurs fenêtres de conversation) - Le piégeage
OnIMWindowContactAdded
, recherchez la poignée dans le dictionnaire. Si tel est le premier événement Ajouté que vous avez vu de la fenêtre, la règle est: si le contact est (IsSelf
), alors vous avez commencé la conversation. Dans le cas contraire, un autre contact a commencé la conversation.
Ce n'est pas la solution la plus satisfaisante (ils ne sont jamais lorsque vous travaillez avec l'API d'automatisation; o).), Mais il devrait vous y