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!

È stato utile?

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ì

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top