如何判断桌面客户端上是否有Skype通话正在进行

5
我已经浏览了一段时间的Skype开发API,想知道是否有一种方式可以通过某些API知道Skype是否正在运行活动呼叫。
Skype.Client.IsRunning可以告诉您Skype应用本身是否正在运行,还有其他一些API可用于了解不同的事情,如通话历史记录等等,但我无法找到一种方法来知道当前是否有Skype通话处于活动状态。
任何帮助将不胜感激。

1
如果我没记错,Skype 有一个特定的端口,你可以嗅探它(类似 Wireshark),看看是否有活动。 - KevinDTimm
Skype 随机选择 1024 以上的端口进行连接。https://support.skype.com/en/faq/FA148/which-ports-need-to-be-open-to-use-skype-for-windows-desktop - Sumant
安装 Skype 时会随机选择一个端口用于传入连接 - 因此,一旦您知道此端口,就可以嗅探传入的呼叫。 - KevinDTimm
3个回答

1

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();
        }
    }
}

请注意,此代码未包括任何清理/错误处理。
希望这有所帮助。

太棒了!这就是我所需要的 :) - Sumant

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接