2013-03-13 30 views
5

我一直在浏览Skype开发API的一段时间,并想知道是否有方法可以通过我知道Skype是否正在通过某些API运行正在进行的通话。如何知道在桌面客户端上是否有Skype通话激活

Skype.Client.IsRunning可以告诉Skype应用程序本身是否正在运行,还有其他几个apis可以知道不同的事情,如通话记录等,但我找不到方法来知道是否有Skype通话目前活跃。

任何帮助将不胜感激。

+1

IIRC,Skype拥有他们使用,你可以嗅出上的特定端口(认为Wireshark的),看看是否有活动 – KevinDTimm 2013-03-13 18:44:28

+0

Skype的随机选择1024以上的端口,用于连接。 https://support.skype.com/zh/faq/FA148/which-ports-need-to-be-open-to-use-skype-for-windows-desktop – Sumant 2013-03-14 05:56:18

+0

'当您安装Skype时,会选择一个随机端口为传入连接“ - 所以一旦你知道这个端口,你可以嗅探来电。 – KevinDTimm 2013-03-14 12:44:30

回答

1

因为你还没有在语言,你正在试图acomplish,我在C#中发布一个样品指定:

using System; 
using System.Windows.Forms; 
using SKYPE4COMLib; 

namespace SkypeTest 
{ 
    public partial class Form1 : Form 
    { 
     private ISkype _skype; 

     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      _skype = new SkypeClass(); 

      var events = (_ISkypeEvents_Event) _skype; 
      events.CallStatus += (call, status) => 
      { 
       System.Diagnostics.Debug.WriteLine(call.PartnerHandle); 

       Action<object, object> a = (partner, sta) => 
       { 
        textBox1.Text = partner.ToString() + " " + sta.ToString(); 
       }; 
       textBox1.Invoke(a, call.PartnerDisplayName, status.ToString()); 
      }; 
      _skype.Attach(); 
     } 
    } 
} 

注意,这个代码不包括任何清理/错误处理。

希望这会有所帮助。

+0

真棒!多数民众赞成所有我需要的:) – Sumant 2013-03-15 07:47:18

相关问题