关于QQ一些功能的实现(二)

        上周已经写了一篇关于QQ一些功能的实现, 感谢大家的支持. 但评论到70层的时候, 我再也坐不住了, 因为几乎100%的同学表示自己的QQ号码测试不成功. 近两万人看过上篇, 不能让这么多同学失望啊! 因此我又加了把劲, 现在只要你按照我的要求做, 就一定能成功. 晚上又抽空写了个Demo给大家参考使用.

        其实正如我在上篇的评论中所说的那样, 我的QQ开通了一个服务的, 只是那几天并没有找到那个网址. 今天早了很久终于让我找到了!! http://wp.qq.com/ 就是这个网址, 大家先要去这个网址登陆一下QQ. 然后就能成功测试我的Demo了 :-)

        我新注册了一个QQ号码测试都是通过的! 因此我觉得这个方法可行, 如果你还是不能登上去, 那真的Sorry了, 我真没辙了...

        目前写了这么几个功能: 查询在线好友 查询某QQ号信息 给某QQ好友发送消息 查看收到的消息 退出登陆. 每个功能我都测试不少遍了, 应该没有多么大的问题的, 欢迎大家下载把玩.

Demo下载地址: http://cid-07452800dc0167da.office.live.com/self.aspx/.Public/Contact/QQ%5E_DEMO%5E_.zip

Demo Project: http://cid-07452800dc0167da.office.live.com/self.aspx/.Public/Contact/QQ%5E_DEMO.zip

转载请注明: http://www.cnblogs.com/technology/

Demo的测试代码部分, 主要测试的就是上一篇中提到的类:

using System;
using System.Text.RegularExpressions;

namespace QQ_DOMO
{
    class Program
    {
        private static QQ myQQ;
        //输出居中的文本
        private static void ConsoleWriteCenter(string s, ConsoleColor color)
        {
            Console.ForegroundColor = color;
            for (int i = 0; i < Console.BufferWidth / 2 - s.Length / 2; i++)
                Console.Write(" ");
            Console.Write(s);
            Console.WriteLine();
            Console.ResetColor();
        }
        //输入一些文本
        private static void ConsoleWrite(string s)
        {
            Console.Write(s);
        }
        //画出=号组成的边界
        private static void WriteBorder()
        {
            Console.ForegroundColor = ConsoleColor.Blue;
            for (int i = 0; i < Console.BufferWidth; i++)
                Console.Write("=");
            Console.ResetColor();
        }
        //输入一行文本
        private static void ConsoleWriteLine(string s)
        {
            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine(s);
            Console.ResetColor();
        }
        //选择Y或者N
        private static bool ConsoleSelectYN()
        {
            Console.ForegroundColor = ConsoleColor.Yellow;
            string s = Console.ReadLine();
            if (s.ToUpper() == "Y")
            {
                Console.ResetColor();
                return true;
            }
            if (s.ToUpper() == "N")
            {
                Console.ResetColor();
                return false;
            }
            else
            {
                Console.WriteLine("No Opinion Matches: " + s);
                Console.ResetColor();
                return false;
            }
        }
        //判断是否是一个QQ号码
        private static bool regexQQ(string s)
        {
            Match match = Regex.Match(s, "[1-9][0-9]{4,}");
            if (string.IsNullOrEmpty(match.Value.ToString()))
            {
                Console.WriteLine("你个家伙, " + s + "根本不是QQ号码!");
                return false;
            }
            else
                return true;
        }
        //控制台读一行文字
        private static string ConsoleReadLine()
        {
            Console.ForegroundColor = ConsoleColor.Yellow;
            string s = Console.ReadLine();
            Console.ResetColor();
            return s;
        }
        //控制台输出有哪些功能
        private static int writeFunc()
        {
            Console.WriteLine("欢迎选择以下功能[1/2/3/4/5]:");
            ConsoleWriteLine("1. 查询在线好友" + "\t\t" + "2. 查询某QQ号信息");
            ConsoleWriteLine("3. 给某QQ好友发送消息" + "\t" + "4. 查看消息");
            ConsoleWriteLine("5. 退出QQ");
            ConsoleWrite("请您选择一个功能:\t");
            string s = ConsoleReadLine();
            int selectNum;
            try
            {
                selectNum = Convert.ToInt32(s);
                if (0 < selectNum && selectNum < 6)
                {
                    WriteBorder();
                    return selectNum;
                }
                else
                {
                    Console.WriteLine("No Opinion Matches:\t" + selectNum);
                    WriteBorder();
                    return 0;
                }
            }
            catch
            {
                Console.WriteLine("您输入了错误的选项!");
                WriteBorder();
                return 0;
            }
        }
        //登陆
        private static void myQQLogin()
        {
            ConsoleWriteLine("正在登陆...需要大概10秒钟时间...");
            if (myQQ.QQ_Login() == true)
                ConsoleWriteLine("登陆成功...");
            else
                ConsoleWriteLine(@"登陆失败...您还没有去http://wp.qq.com开通QQ在线状态功能");
        }
        //获取在线好友
        private static void myQQOnLine()
        {
            ConsoleWriteLine("正在查询在线好友列表, 请稍等...");
            myQQ.QQ_Query_Stat();
            ConsoleWriteLine("状态" + "\t" + "号码" + "\t\t" + "昵称");
            for (int i = 0; i < myQQ.online_NameK.Length; i++)
            {
                string station;
                if (myQQ.online_Station[i] == "10")
                    station = "在线";
                if (myQQ.online_Station[i] == "20")
                    station = "离开";
                if (myQQ.online_Station[i] == "30")
                    station = "忙碌";
                else
                    station = "在线";
                if (!string.IsNullOrEmpty(myQQ.online_Number[i]))
                    ConsoleWriteLine(station + "\t" + myQQ.online_Number[i] + "\t" + myQQ.online_NameK[i]);
            }
            WriteBorder();
        }
        //查询某人信息
        private static void myQQQuery(string num)
        {
            string[] information = myQQ.QQ_GetInfo(num);
            ConsoleWriteLine("联系地址:" + information[0] + "\t" + "用户年龄:" + information[1] + "\t" + "用户邮箱:" + information[2]);
            ConsoleWriteLine("个人网站:" + information[4] + "\t" + "职业:" + information[5] + "\t" + "邮编:" + information[6]);
            ConsoleWriteLine("联系电话:" + information[7] + "\t" + "简介:" + information[8]);
            ConsoleWriteLine("省份:" + information[9] + "\t" + "真实姓名:" + information[10] + "\t" + "毕业院校:" + information[11]);
            ConsoleWriteLine("性别:" + information[12] + "\t\t" + "QQ号:" + information[13] + "\t" + "昵称:" + information[14]);
            WriteBorder();
        }
        //发送消息
        private static void myQQSend(string num, string msg)
        {
            if (myQQ.QQ_SendMsg(num, msg) == true)
            {
                ConsoleWriteLine("发送成功...");
            }
            else
            {
                ConsoleWriteLine("发送失败...");
            }
        }
        //接受消息
        private static void myQQGet()
        {
            myQQ.GetMsgEx();
            if (myQQ.MT != null)
            {
                for (int i = 0; i < myQQ.MG.Length; i++)
                {
                    if (myQQ.MT[i] == "9")
                        ConsoleWriteLine(myQQ.UN[i] + "说:\t" + myQQ.MG[i]);
                }
            }
            else
            {
                ConsoleWriteLine("您现在还没有收到信息...");
            }
            WriteBorder();
        }
        static void Main(string[] args)
        {
            #region test
            WriteBorder();
            ConsoleWriteCenter("MY NAME IS CHEN HUA I MADE THIS JUST FOR FUN", ConsoleColor.Green);
            ConsoleWriteCenter("THIS IDEA'S COPYRIGHT IS RESERVED BY CHEN HUA", ConsoleColor.Green);
            ConsoleWriteCenter(@"PLEASE ATTENTION ME AT www.cnblogs.com/technology", ConsoleColor.Cyan);
            ConsoleWriteCenter("DO NOT DO ANYTHING ILLEGAL WITH THIS DEMO OR IDEA", ConsoleColor.Red);
            WriteBorder();
            bool agreeOrNot;
            do
            {
                ConsoleWrite("同意作者上面的内容? [Y/N]" + "\t");
                agreeOrNot = ConsoleSelectYN();
            } while (agreeOrNot == false);
            WriteBorder();
        Begin:
            //输入QQ号码
            string sQQNum;
            do
            {
                ConsoleWrite("赶紧输入你的QQ号码:" + "\t");
                sQQNum = ConsoleReadLine().Trim();
                agreeOrNot = regexQQ(sQQNum);
            } while (agreeOrNot == false);
            string sQQPwd;
            do
            {
                ConsoleWrite("再输入" + sQQNum + "的密码:" + "\t");
                sQQPwd = ConsoleReadLine().Trim();
            } while (agreeOrNot == false);
            WriteBorder();
            //开始一些功能
            myQQ = new QQ(sQQNum, sQQPwd);   //构造QQ
            myQQLogin();
            WriteBorder();
            #endregion
            //进入死循环执行功能
            do
            {
                //获取宣传哪一项功能
                int selectNum;
                do
                {
                    selectNum = writeFunc();    //写出QQDemo目前支持的一些功能
                    if (selectNum == 0)
                        agreeOrNot = false;
                    else
                        agreeOrNot = true;
                    if (selectNum == 1)
                        myQQOnLine();
                    if (selectNum == 2)
                    {
                        ConsoleWrite("输入你要查询哪个QQ号码:" + "\t");
                        string num = ConsoleReadLine();
                        if (regexQQ(num))
                        {
                            myQQQuery(num);
                        }
                    }
                    if (selectNum == 3)
                    {
                        ConsoleWrite("请输入收消息的QQ好友:\t");
                        string num = ConsoleReadLine();
                        string msg;
                        if (regexQQ(num) == true)
                        {
                            ConsoleWrite("请输入消息内容:\t\t");
                            msg = ConsoleReadLine();
                            myQQ.QQ_SendMsg(num, msg);
                            WriteBorder();
                        }
                    }
                    if (selectNum == 4)
                    {
                        myQQGet();
                    }
                    if (selectNum == 5)
                    {
                        myQQ.QQ_Logout();
                        ConsoleWriteLine("成功退出...");
                        WriteBorder();
                        goto Begin;
                    }
                } while (agreeOrNot == false);
            } while (true);
        }
    }
}
posted @ 2010-12-27 22:48  Create Chen  阅读(5863)  评论(43编辑  收藏  举报