Офисный коммуникатор: как определить открытие окна IM

StackOverflow https://stackoverflow.com/questions/4168049

  •  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) в словаре (так что вы можете обрабатывать несколько разговоров Windows)
  • На ловушку OnIMWindowContactAdded, ищите ручку в словаре. Если это первое добавленное событие, которое вы видели для окна, правило: если контакт вы (IsSelf), тогда вы начали разговор. В противном случае еще один контакт начал разговор.

Это не самое удовлетворительное решение (они никогда не работают, когда вы работаете с API автоматизации; O)), но это должно вас туда добраться.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top