Office Communicator: Come identificare l'apertura di una finestra IM
-
09-10-2019 - |
Domanda
Sto sviluppando un "messaggio automatico" add-in per Office Communicator 2007, ma ho bisogno di sapere come identificare se un altro utente apre la finestra di IM (non io, ma un altro utente).
Ho il seguente evento:
private void communicator_OnIMWindowCreated(object pIMWindow)
{
if ((chk_Enabled.Checked))
{
IMessengerConversationWndAdvanced imWindow = pIMWindow as IMessengerConversationWndAdvanced;
imWindow.SendText(TxtAutoMessage.Text);
}
}
C'è un modo? Grazie!
Soluzione
purtroppo il Communicator Automation API non supporta direttamente. L'unica soluzione che ho trovato coinvolge intrappolando l'evento OnIMWindowContactAdded
.
Per una conversazione iniziata da voi, i seguenti eventi fuoco in questo modo:
-
OnIMWindowCreated
-
OnIMWindowContactAdded
(per te) -
OnIMWindowContactAdded
(per l'altro partecipante)
Per una conversazione avviato da un altro partecipante, i seguenti eventi fuoco in questo modo:
-
OnIMWindowCreated
-
OnIMWindowContactAdded
(per l'altro partecipante)
Così, quando gli iniziati partecipante alla conversazione, non si vede se stessi aggiunto come contatto.
Si potrebbe utilizzare questo come segue
- Il trapping
OnIMWindowCreated
, memorizzare l'handle di finestra (pIMWindow.HWND
) in un dizionario (in modo da poter gestire più finestre di conversazione) - Il trapping
OnIMWindowContactAdded
, aspetto per il manico nel dizionario. Se questo è il primo evento Aggiunto hai visto per la finestra, la regola è: se il contatto si (IsSelf
) è, allora hai iniziato la conversazione. In caso contrario, un altro contatto ha iniziato la conversazione.
Non è la soluzione più soddisfacente (non lo sono mai quando si lavora con l'API di automazione; o).), Ma dovrebbe arrivare lì