什麼即時試圖做的是,將勸告,使Office Communicator中 音頻電話通過無線連接使用 有線連接,而不是用戶的功能。檢測Office Communicator的音頻呼叫
我一直在四處尋找,但一直沒能找到信息即時搜索
林尋找一種方式來檢測,如果Office Communicator的是音頻呼叫。 有沒有簡單的方法來做到這一點?
什麼即時試圖做的是,將勸告,使Office Communicator中 音頻電話通過無線連接使用 有線連接,而不是用戶的功能。檢測Office Communicator的音頻呼叫
我一直在四處尋找,但一直沒能找到信息即時搜索
林尋找一種方式來檢測,如果Office Communicator的是音頻呼叫。 有沒有簡單的方法來做到這一點?
我不認爲你能夠得到你所需要的Communicator,但你可以接近。 (如果您要升級到Lync,您可能會更接近或完全一致)。
嘗試正在追趕的用戶狀態發生變化的第一件事:
MessengerClass _communicator;
public Form1()
{
InitializeComponent();
_communicator = new MessengerClass();
_communicator.OnMyStatusChange += new DMessengerEvents_OnMyStatusChangeEventHandler(_communicator_OnMyStatusChange);
}
void _communicator_OnMyStatusChange(int hr, MISTATUS mMyStatus)
{
AddText(string.Format("My Status changed to '{0}'", mMyStatus));
}
您正在尋找的MISTATUS_ON_THE_PHONE
這種方法的缺點狀態是一定的狀態將覆蓋MISTATUS_ON_THE_PHONE狀態。例如如果用戶設置爲「在線」,然後撥打或接聽電話,狀態將變爲MISTATUS_ON_THE_PHONE。但是,如果他們的狀態設置爲「請勿打擾」,並且他們撥打或接聽電話,狀態將不會更改爲MISTATUS_ON_THE_PHONE。
您可以通過檢查創建的調用來解決這個問題。捕獲正在創建一個新的對話窗口是非常簡單的:
_communicator = new MessengerClass();
_communicator.OnIMWindowCreated += new DMessengerEvents_OnIMWindowCreatedEventHandler(_communicator_OnIMWindowCreated);
問題是,這將觸發對IM和AV對話,也傳入對話和傳出。無法直接檢測該呼叫是否是外發音頻呼叫。
您還可以看到「聯繫人已添加」事件,這會爲您提供有關哪些收件人已添加到對話中以及何時添加的信息。有可能發生這種情況的順序會給你一些信息,例如它是傳出還是傳入,你可以查找「tel:」uri被添加來告訴你這個電話是否是給手機的(儘管這不會幫助溝通,以溝通調用)
_communicator.OnIMWindowContactAdded += new DMessengerEvents_OnIMWindowContactAddedEventHandler(_communicator_OnIMWindowContactAdded);
做的最好的事情就是周圍有一齣戲與活動,並查看在哪些情況下會發生什麼。這段代碼應該讓你啓動並運行。
MessengerClass _communicator;
public Form1()
{
InitializeComponent();
_communicator = new MessengerClass();
_communicator.OnIMWindowCreated += new DMessengerEvents_OnIMWindowCreatedEventHandler(_communicator_OnIMWindowCreated);
_communicator.OnIMWindowDestroyed += new DMessengerEvents_OnIMWindowDestroyedEventHandler(_communicator_OnIMWindowDestroyed);
_communicator.OnIMWindowContactAdded += new DMessengerEvents_OnIMWindowContactAddedEventHandler(_communicator_OnIMWindowContactAdded);
_communicator.OnIMWindowContactRemoved += new DMessengerEvents_OnIMWindowContactRemovedEventHandler(_communicator_OnIMWindowContactRemoved);
_communicator.OnMyStatusChange += new DMessengerEvents_OnMyStatusChangeEventHandler(_communicator_OnMyStatusChange);
}
void _communicator_OnMyStatusChange(int hr, MISTATUS mMyStatus)
{
AddText(string.Format("My Status changed to '{0}'", mMyStatus));
}
void _communicator_OnIMWindowContactRemoved(object pContact, object pIMWindow)
{
AddText(string.Format("{0} - Participant removed - '{1}'", ((IMessengerConversationWndAdvanced)pIMWindow).HWND, ((IMessengerContactAdvanced)pContact).SigninName));
}
void _communicator_OnIMWindowContactAdded(object pContact, object pIMWindow)
{
AddText(string.Format("{0} - Participant added - '{1}'", ((IMessengerConversationWndAdvanced)pIMWindow).HWND, ((IMessengerContactAdvanced)pContact).SigninName));
}
void _communicator_OnIMWindowDestroyed(object pIMWindow)
{
AddText(string.Format("{0} Conversation Closed, duration = {1}", ((IMessengerConversationWndAdvanced)pIMWindow).HWND, (DateTime.Now - _start).ToString()));
}
void _communicator_OnIMWindowCreated(object pIMWindow)
{
try
{
AddText(string.Format("{0} Conversation Created", ((IMessengerConversationWndAdvanced)pIMWindow).HWND));
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
private delegate void AddTextDelegate(string text);
private void AddText(string text)
{
if (textBox1.InvokeRequired)
{
textBox1.Invoke(new AddTextDelegate(AddText), text);
return;
}
textBox1.Text += text + "\r\n";
}
順便說一句,不要忘記接受以此爲使用「嘀」的答案,如果你覺得它幫助:)
比你的回答是真的給了我很多的信息的工作將有希望帶領我到那裏。我真的不在乎電話是否打出來,或者只是在打電話。 – Magnus 2011-04-20 10:40:28