к сожалению, API-интерфейс Communicator не поддерживает это напрямую.Единственный обходной путь, который я нашел, включает в себя перехват события OnIMWindowContactAdded
.
Для разговора, начатого вами, следующие события запускаются в следующем порядке:
OnIMWindowCreated
OnIMWindowContactAdded
(для себя) OnIMWindowContactAdded
(для другого участника)
Для разговора, начатого другим участником, следующие события запускаются в этом порядке:
OnIMWindowCreated
OnIMWindowContactAdded
(для другого участника)
Поэтому, когда участник начинает разговор, вы не видитеВы добавили себя в качестве контакта.
Вы можете использовать это следующим образом
- При перехвате
OnIMWindowCreated
сохранить дескриптор окна (pIMWindow.HWND
) в словаре (чтобы вы могли обрабатыватьнесколько окон разговора) - При перехвате
OnIMWindowContactAdded
найдите дескриптор в словаре.Если это первое добавленное событие, которое вы видели для окна, правило таково: если контакт - это вы (IsSelf
), то вы начали разговор.В противном случае, другой контакт начал разговор.
Это не самое удовлетворительное решение (оно никогда не бывает, когда вы работаете с Automation API; o)), но оно должно вас туда доставить.