You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用skype4com.dll通过C#发送命令无法获取返回值技术求助

解决Skype4COM发送命令后无法接收返回信息的问题

嘿,我之前用C#调用Skype4COM做自动化的时候也踩过这个一模一样的坑!能发命令让Skype响应,但收不到返回结果,核心问题大概率是没正确订阅Skype的回调事件——因为Skype4COM的命令返回不是同步返回的,而是通过事件通知的方式把结果推送给我们的。

下面给你一步步梳理解决的方案:

1. 先确认Skype的API权限设置

首先打开Skype客户端,找到设置里的高级选项,一定要勾选「允许Skype API访问」,建议把「当其他应用程序使用Skype API时通知我」改成「不通知」,避免弹窗打断自动化流程。这一步很容易被忽略,权限没开的话API调用会出现各种奇怪的无响应问题。

2. 正确订阅CommandReceived事件

Skype执行完GET类命令后,会通过CommandReceived事件把结果传递过来,所以必须先订阅这个事件,再发送命令。

给你一段完整的可运行示例代码:

using SKYPE4COMLib;
using System;

class SkypeAutomation
{
    static Skype skype;

    static void Main(string[] args)
    {
        skype = new Skype();
        
        // 附加到运行中的Skype实例,超时7秒,若未运行则自动启动Skype
        bool isAttached = skype.Attach(7, true);
        if (!isAttached)
        {
            Console.WriteLine("无法连接到Skype,请检查Skype是否运行或API权限是否开启");
            return;
        }

        // 订阅命令结果接收事件
        skype.CommandReceived += Skype_CommandReceived;

        // 发送获取版本的命令
        skype.SendCommand("GET SKYPEVERSION");

        // 控制台程序需要保持运行才能接收事件,否则主线程直接退出就收不到回调了
        Console.WriteLine("等待返回结果...按任意键退出");
        Console.ReadKey();
    }

    private static void Skype_CommandReceived(object sender, CommandReceivedEventArgs e)
    {
        // 解析返回结果,格式通常是「命令名 返回值」
        string[] commandParts = e.Command.Split(' ', StringSplitOptions.RemoveEmptyEntries);
        if (commandParts[0].Equals("SKYPEVERSION", StringComparison.OrdinalIgnoreCase))
        {
            string version = commandParts[1];
            Console.WriteLine($"成功获取Skype版本:{version}");
        }
    }
}

3. 额外注意事项

  • 线程问题:如果是WinForm/WPF程序,事件回调可能在非UI线程触发,要记得用Invoke切换到UI线程再更新界面,避免跨线程操作异常。
  • 连接状态检查:每次调用API前最好检查skype.Attached是否为true,如果连接断开可以重新调用Attach方法重连。
  • 命令格式规范:确保发送的命令符合Skype API的格式要求,比如GET SKYPEVERSION是标准写法,虽然Skype API通常不区分大小写,但尽量用大写避免不必要的问题。

按这个流程走,你应该就能顺利收到GET SKYPEVERSION的返回结果了!

内容的提问来源于stack exchange,提问作者Matt Palmer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:31:39