【问题标题】:How to know if there is a skype call active on desktop client如何知道桌面客户端上是否有激活的 Skype 通话
【发布时间】:2013-03-13 18:37:43
【问题描述】:

我已经浏览 Skype 开发 API 有一段时间了,想知道是否有一种方法可以让我知道 Skype 是否正在通过某个 API 进行活动呼叫。

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

任何帮助将不胜感激。

【问题讨论】:

  • IIRC,Skype 有一个他们使用的特定端口,你可以嗅探它(想想 wireshark)看看是否有活动
  • skype随机选择1024以上的端口进行连接。 support.skype.com/en/faq/FA148/…
  • When you install skype a random port is selected for incoming connections - 所以一旦你知道这个端口,你就可以嗅探来电。

标签: api skype


【解决方案1】:

由于您尚未指定您尝试使用哪种语言来完成,因此我将在 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();
        }
    }
}

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

希望这会有所帮助。

【讨论】:

  • 太棒了!这就是我所需要的:)
【解决方案2】:

另一种选择是使用Skype命令:http://dev.skype.com/desktop-api-reference#OBJECT_CALL

【讨论】:

    【解决方案3】:

    这里是一个示例,如何检查使用 Skype4PySevabot 中的活动呼叫

    基本上,您监听通话事件并捕获开始和结束通话事件,并在通话处于活动状态时自行记账。

    【讨论】:

      猜你喜欢
      • 2014-02-21
      • 1970-01-01
      • 2010-11-17
      • 1970-01-01
      • 2015-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-12
      相关资源
      最近更新 更多