c#下skype api 开发总结

读了好久的文献,参与了一个skype api 开发的项目,有些收获,做个记录。
开发准备:下载skype4com。c#中新建项目,并要添加引用。头文件中做include.
1、关于attach
skype类的attach方法,只有在用户登录了skype后才有效,如果用户未登录或skype未运行时使用attach方法,运行会出错。而SkypeClass类(不是skype类)也拥有attach方法,该attach方法却可以在任何情况下使用。所以正确的做法是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    public SKYPE4COMLib.SkypeClass cskype;
    public Skype skype = new Skype();
public Form1()
    {
    cskype = new SkypeClass();
    cskype._ISkypeEvents_Event_AttachmentStatus += new _ISkypeEvents_AttachmentStatusEventHandler(OurAttachmentStatus);
    }

    private void Form1_Load(object sender, EventArgs e)
        {
            cskype.Attach(7, false);
        }
    public void OurAttachmentStatus(TAttachmentStatus status)
        {
            if (status == TAttachmentStatus.apiAttachAvailable)
            {
                skype.Attach(7, false);
            }
        }

程序解说:
装载窗体的时候skypeClass Attach 到skype,同时利用自己的._ISkypeEvents_Event_AttachmentStatus事件检测attach状态的变化,当attach的状态变为aviilable(可以进行attach了)时,再利用skype 类的attach附加到skype上。

2、skype的com组件进行了很好的面向对象封装。所有可以进行的操作全部封闭在类中,如打电话call类,聊天chat类等。
同时还有一个特点是:枚举。很多属性值全都保存枚举中。如简单的电话状态判断:

1
2
call calls;//新建call对象
calls.Status == TChatMessageStatus.cmsReceived

TChatMessageStatus就是一个枚举类型。
有人可能注意到有call类和icall类,这个区别我也没弄明白,欢迎大家指教。

3、该com组件另一个特点是使用大量collection来保存结果数据。如Missedcalls,friend等

1
2
3
4
5
6
7
8
9
10
11
12
13
//skype.get_Calls("")取得所有的呼叫历史 collection类型,用foreach取出其中数据
 foreach (Call calls in skype.get_Calls(""))

            {
                textBox2.AppendText("Status:" + calls.Status.ToString());
                textBox2.AppendText("Type:" + calls.Type.ToString() + "\n");
                //calls.Members也是一个collection类型,取出打电话的成员
                foreach (User uses in calls.Members)
                {
                   textBox2.AppendText("Member:" + uses.FullName.ToString() + "\n");
                }
                textBox2.AppendText("--------------------------\n");
            }

大概也就这些了,下班。
一些demo的下载地址见:http://download.csdn.net/source/1704025

c#下skype api 开发总结》上有4条评论

  1. bobby

    你好,看了你的文章,对我有很大的启示,请问你有没有关于Call类的源码实例,让我拜读一下,因为我是个新手,最近正好接手做一个实现skype打电话功能的项目,正苦于不知如何着手。麻烦你看见留言后,与我联系好吗,QQ:33506405,TEL:15099936416,MSN:bobby19830923@yahoo.com.cn 感激不敬~!

    回复
  2. Andrew

    小弟最近想要开发一个有关自动发送讯息的系统,可否烦请将Demo资料Mail给我呢??
    谢谢你的帮忙~~

    回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注