关于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); } } }
作者:Create Chen
出处:http://technology.cnblogs.com
说明:文章为作者平时里的思考和练习,可能有不当之处,请博客园的园友们多提宝贵意见。
本作品采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。