博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C# 登陆 电脑 QQ 发送消息

Posted on 2012-12-18 16:51  xuld  阅读(2618)  评论(7编辑  收藏  举报

本来打算做个聊天机器人的,不过网上找了下,找不到能用的现成的登陆QQ用的C#代码。最多就只找到一个手机 QQ 的版本。 不过这个版本不能群聊,这个比较郁闷。所以,干脆就自己捣鼓了一份。测试在 2012/12/18   可以正常登陆qq,支持群聊,好友处显示为   电脑在线。

相关的源码下载:    http://pan.baidu.com/share/link?shareid=142060&uk=1845666913

 代码如下:

 // 创建一个新的 QQ 客户端。
            QQClient qq = QQClient.Create(qqNumber, qqPwd);

            // 登陆 QQ 。
            if (qq.Login() == QQLoginProcess.Login) {

                // 设置 QQ 为隐身登陆 :)
                qq.Status = QQStatus.Hidden;

                // 设置收到消息的回调。
                qq.FirendMessageCallback = new MessageCallback((uint uid, uint int_uid, long t, string msg) => {
                    Console.WriteLine("收到消息 [{0}] {1}", uid, msg);

                    qq.SendMessageToFriend(uid, msg);
                });

                // 设置收到消息的回调。
                qq.GroupMessageCallback = new MessageCallback((uint uid, uint int_uid, long t, string msg) => {
                    Console.WriteLine("收到群 消息 [{2}/{0}] {1}", int_uid, msg, uid);
                });

                // 发送消息。
                qq.SendMessageToFriend(273208811, "xuld 的 QQ,有问题可问我");

                Console.WriteLine("登陆完成。请按回车键注销登陆。否则腾讯可能认为是非法程序。");
                Console.ReadLine();

                // 注销 QQ
                qq.Logout();

            }

 顺便还搞了一个异步登陆的方式:

 

QQClient qq = new QQClient();
qq.LoginAsync();

// 测试 QQ 目前的登陆过程。
while(qq.LoginProcess != QQLoginProcess.Login){
   Thread.Sleep(1000);  // 可以做其它事情。
}

相关的源码下载:    http://pan.baidu.com/share/link?shareid=142060&uk=1845666913