c#实现QQ群成员列表导出及邮件群发之模拟QQ登陆

前言

本文的重要部分:

1、抓包获取QQ空间或者邮箱登陆地址,分析参数,用户名,密码,验证码,gtk,随即数。

2、获取每次登陆需要的验证码

3、用户名,密码,验证码加密得到登陆密码

4、Http模拟登陆拿cookie

本文实验的思路也可换另一种方式,抓包获取登陆的js,用代码操作js来计算密码 ,gtk等实现登陆。

抓包

1、我们来访问qq空间的地址http://i.qq.com/,打开网站,我们可以看到登陆的对话框,首先我们输入一个错误的账号和密码,抓起提交的地址。

2、输入用户名和密码之后我们用抓包工具看到有2个后台请求的地址,如下图

我们可以根据返回的代码可以看出第二个图的地址是QQ登陆后台get请求的地址,所以我们实现登陆就是像这个地址提交数据。第一张图则是空间登陆每次返回的验证码产生的地址,通过多次输入正确用户名密码,第一张图地址返回类似ptui_checkVC('0','!JWE','\x00\x00\x00\x00\x46\x86\xd2\x36');代码,其中括号内参数与登陆请求地址中verifycode=!JWE每次相同,这个便是登陆的验证码,登陆地址则返回类似ptuiCB('0','0','http://qzs.qq.com/qzone/v5/loginsucc.html?para=izone','0','登录成功!', 'xxx');返回此代码则说明登陆成功。

通过抓包我们提取出来的2个地址:

1、验证码获取地址(输入用户名时返回):

http://check.ptlogin2.qq.com/check?regmaster=&uin={0}&appid=549000912&js_ver=10038&js_type=1&login_sig=46Flu6g0o2A1hcewVAPUpItgSNJncoqujR4vudgX8ZRnruuCSOzMGcbd3CnQhw0y&u1=http%3A%2F%2Fqzs.qq.com%2Fqzone%2Fv5%2Floginsucc.html%3Fpara%3Dizone&r={1}

参数0:QQ账号,参数1:随即数

说明:一般情况下是不会产生手动输入验证码的情况下,若是QQ号码不存在或者错误,此时会出现图片验证码,我们可以用一个处理一下显示在imge中手动输入。

2、登陆提交地址:

http://ptlogin2.qq.com/login?u={0}&p={1}&verifycode={2}&aid=549000912&u1=http%3A%2F%2Fqzs.qq.com%2Fqzone%2Fv5%2Floginsucc.html%3Fpara%3Dizone&h=1&ptredirect=0&ptlang=2052&from_ui=1&dumy=&low_login_enable=0&regmaster=&fp=loginerroralert&action=11-52-1375668422981&mibao_css=&t=1&g=1&js_ver=10038&js_type=1&login_sig=46Flu6g0o2A1hcewVAPUpItgSNJncoqujR4vudgX8ZRnruuCSOzMGcbd3CnQhw0y

参数0:QQ号码,参数1:加密以后的密码,参数2:返回的验证码

本人文字功底实在太差,说不太清楚,抓包需要我多次试验,多次分析,才可取得正确的地址。登陆的最重要目的是获取请求页面的cookie。

代码部分

1、http请求帮助代码

 1     public class HttpHelper
 2     {
 3         /// <summary>
 4         /// 获取字符流
 5         /// </summary>
 6         /// <param name="url"></param>
 7         /// <param name="cookieContainer"></param>
 8         /// <returns></returns>
 9         public static Stream GetStream(string url, CookieContainer cookieContainer)
10         {
11             HttpWebRequest httpWebRequest = null;
12             HttpWebResponse httpWebResponse = null;
13 
14             try
15             {
16                 httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
17                 httpWebRequest.CookieContainer = cookieContainer;
18                 httpWebRequest.ContentType = contentType;
19                 httpWebRequest.Referer = referer;
20                 httpWebRequest.Accept = accept;
21                 httpWebRequest.UserAgent = userAgent;
22                 httpWebRequest.Method = "GET";
23                 httpWebRequest.ServicePoint.ConnectionLimit = int.MaxValue;
24 
25                 httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
26                 Stream responseStream = httpWebResponse.GetResponseStream();
27 
28                 return responseStream;
29             }
30             catch (Exception)
31             {
32                 return null;
33             }
34 
35         }
36 
37         /// <summary>
38         /// 获取HTML
39         /// </summary>
40         /// <param name="url"></param>
41         /// <param name="cookieContainer"></param>
42         /// <returns></returns>
43         public static string GetHtml(string url, CookieContainer cookieContainer)
44         {
45             Thread.Sleep(1000);
46             HttpWebRequest httpWebRequest = null;
47             HttpWebResponse httpWebResponse = null;
48             try
49             {
50                 httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
51                 httpWebRequest.CookieContainer = cookieContainer;
52                 httpWebRequest.ContentType = contentType;
53                 httpWebRequest.Referer = referer;
54                 httpWebRequest.Accept = accept;
55                 httpWebRequest.UserAgent = userAgent;
56                 httpWebRequest.Method = "GET";
57                 httpWebRequest.ServicePoint.ConnectionLimit = int.MaxValue;
58 
59                 httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
60                 Stream responseStream = httpWebResponse.GetResponseStream();
61                 StreamReader streamReader = new StreamReader(responseStream, Encoding.UTF8);
62                 string html = streamReader.ReadToEnd();
63 
64                 streamReader.Close();
65                 responseStream.Close();
66 
67                 httpWebRequest.Abort();
68                 httpWebResponse.Close();
69 
70                 return html;
71             }
72             catch (Exception)
73             {
74                 return string.Empty;
75             }
76 
77         }
78     }
View Code

2、获取验证码

    //取验证码
        public static string GetVerfiyCode(string qqnum,CookieContainer cookie)
        {
            Random rand = new Random();
            double r = rand.NextDouble();
            string checkcodeurl = string.Format(@"http://check.ptlogin2.qq.com/check?uin={0}&appid=1006102&r={1}", qqnum, r);
            Stream stream = HttpHelper.GetStream(checkcodeurl, cookie);
            StreamReader streamReader = new StreamReader(stream, Encoding.UTF8);
            return streamReader.ReadToEnd();
        }
        //取图片验证码,可将验证码直接输出在image中
        public static Stream GetVerfycodeImage(CookieContainer cookie, string qqnum)
        {
            Random rand = new Random();
            double r = rand.NextDouble();
            string codeimageurl = string.Format("http://captcha.qq.com/getimage?aid=1006102&r={0}&uin={1}", r, qqnum);
            return HttpHelper.GetStream(codeimageurl, cookie);
        }    

通过GetVerfiyCode()的返回 值判断,是否需要手动输入验证码

//得验证吗
            if (retString.Contains("ptui_checkVC('0','"))
            {
         //不需要手动输入
this.txtverfiycode.Text = retString.Replace("ptui_checkVC('0','", "").Replace("'", "").Replace(")", "").Replace(";", "").Substring(0, 4); } else if (retString.Contains("ptui_checkVC('1',")) {
        //需要手动输入,将验证码输出在image中
this.vefycodpicbox.Image = Image.FromStream(GetVerfycodeImage(retString, this.txtUseraccount.Text)); }

3、计算密码,密码的计算方法可以通过js计算,或者直接使用如下c#版的,总的来说腾讯的密码加密比较麻烦,需要QQ号码,密码,验证码三个参数,有兴趣的可自己研究下。

代码如下:

 1 public static class PasswordHelper
 2     {
 3         /// <summary>
 4         /// 根据QQ号码和验证码加密密码
 5         /// </summary>
 6         /// <param name="qqNum">QQ号码</param>
 7         /// <param name="password">QQ密码</param>
 8         /// <param name="verifycode">验证码</param>
 9         /// <returns>密码密文</returns>
10         public static string GetPassword(string qqNum, string password, string verifycode)
11         {
12             //uin为QQ号码转换为16位的16进制
13             int qq;
14             int.TryParse(qqNum, out qq);
15 
16             qqNum = qq.ToString("x");
17             qqNum = qqNum.PadLeft(16, '0');
18 
19             String P = hexchar2bin(md5(password));
20             String U = md5(P + hexchar2bin(qqNum)).ToUpper();
21             String V = md5(U + verifycode.ToUpper()).ToUpper();
22             return V;
23         }
24 
25         public static string md5(string input)
26         {
27             byte[] buffer = MD5.Create().ComputeHash(Encoding.GetEncoding("ISO-8859-1").GetBytes(input));
28             return binl2hex(buffer);
29         }
30 
31         public static string binl2hex(byte[] buffer)
32         {
33             StringBuilder builder = new StringBuilder();
34             for (int i = 0; i < buffer.Length; i++)
35             {
36                 builder.Append(buffer[i].ToString("x2"));
37             }
38             return builder.ToString();
39         }
40 
41         public static string hexchar2bin(string passWord)
42         {
43             StringBuilder builder = new StringBuilder();
44             for (int i = 0; i < passWord.Length; i = i + 2)
45             {
46                 builder.Append(Convert.ToChar(Convert.ToInt32(passWord.Substring(i, 2), 16)));
47             }
48             return builder.ToString();
49         }
50     }
View Code

到此为止,登陆需要的参数已经全了,下面就是实现登陆拿cookie。

4、登陆的方法与获取验证码一样

//登录方法
        public static bool IsLogin(string qqnum,string code,string passwords,CookieContainer cookie)
        {
            string password = PasswordHelper.GetPassword(qqnum, passwords, code);
            string loginUrlstring = @"http://ptlogin2.qq.com/login?u=" + qqnum + "&p=" + password + "&verifycode=" + code + "&aid=1006102&u1=http%3A%2F%2Fid.qq.com%2Findex.html&h=1&ptredirect=1&ptlang=2052&from_ui=1&dumy=&fp=loginerroralert&action=8-29-82478035&mibao_css=&t=1&g=1";
            Stream stream = HttpHelper.GetStream(loginUrlstring, cookie);
            StreamReader streamReader = new StreamReader(stream, Encoding.UTF8);
            string retString = streamReader.ReadToEnd();//        retString    "ptuiCB('0','0','http://id.qq.com/index.html','1','登录成功!', 'xxx');\r\n"    string
            return retString.Contains("ptuiCB('0',") ? true : false;
        }

我们可以直接调用此方法验证是否登陆成功,同时将cookie保存在一个全局变量中供以后使用。

到此为止,QQ用http模拟登陆已经成功,完成了获取群列表的第一步。下面一篇就到获取群列表,群成员。

 

临时写的代码,时间仓促,比较杂乱,有什么出错的地方欢迎指出。若资料有用,帮忙顶一下。


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
第1章 认识C#及开发环境 1.1 C#概述 1.1.1 C#发展历程 1.1.2 C#语言编程环境 1.2.NETFramework2.0简介 1.2.1 什么是.NETFramework2.0 1.2.2.NETFramework2.0特性 1.3 安装集成开发环境VisualStudio2005 1.3.1 安装VisualStudio2005开发环境 1.3.2 安装MSDN帮助 1.3.3 如何使用MSDN帮助 1.3.4 利用MSDN帮助附带的示例学习编程 1.4 启动VisualStudio2005开发环境 1.4.1 启动VisualStudio2005 1.4.2 创建项目 1.5 熟悉VisualStudio2005集成开发环境 1.5.1 新特性 1.5.2 主窗口 1.5.3 菜单栏 1.5.4 工具栏 1.5.5 文档窗口 1.5.6 工具箱窗口 1.5.7 解决方案资源管理器窗口 1.5.8 属性窗口 1.5.9 代码编辑器 1.5.10 “错误列表”面板 1.5.11 “输出”面板 1.6 程序调试 1.6.1 断点操作 1.6.2 使用开始、中断和停止执行功能调试程序 1.6.3 单步执行 1.6.4 运行到程序的指定位置 第2章 QQ企业通 2.1 设计思路 2.2 关键技术 2.2.1 INI文件的应用 2.2.2 线程的应用 2.2.3 在Socket中发送大容量的消息 2.2.4 将流序列化或反序列化为对象 2.2.5 用InnerList列表记录信息 2.3 设计过程 2.3.1 类库的设计 2.3.2 客户端注册模块设计 2.3.3 客户端登录模块设计 2.3.4 客户端QQ模块设计 2.3.5 客户端消息发送模块设计 2.3.6 服务器端控制台模块设计 第3章 SQL数据表提取器模块 3.1 概述 3.2 关键技术 3.2.1 如何备份数据库 3.2.2 如何还原数据库 3.2.3 如何附加数据库 3.2.4 如何分离数据库 3.2.5 设置数据库模式 3.3 设计过程 3.3.1 主窗体 3.3.2 获取服务器名称 3.3.3 获取所有数据库 3.3.4 获取所有数据表 3.3.5 备份数据库 3.3.6 还原数据库 3.3.7 附加数据库 3.3.8 分离数据库 3.3.9 导出表结构 3.3.10 导出数据 第4章 万能搜索模块 4.1 设计思路 4.2 关键技术 4.2.1 如何制作一个接口程序 4.2.2 实现接口程序的信息互传 4.2.3 如何将接口程序加载到其他程序中 4.2.4 怎样操作RichtextBox控件的选择文本 4.2.5 如何获取数据表中字段的描述信息 4.3 设计过程 4.3.1 获取数据表中字段的中文信息 4.3.2 添加数据表的查询条件 4.3.3 向SQL语句中添加括号 4.3.4 查询生成后的SQL语句 4.3.5 主程序获得接口信息 第5章 万能打印模块 5.1 设计思路 5.2 关键技术 5.2.1 打印设置(PrintDocument类) 5.2.2 打印预览对话框(PrintPreviewDialog) 5.2.3 打印对话框(PrintDialog) 5.2.4 获取指定颜色值和字体样式 5.2.5 DataGridView控件的相关应用 5.3 设计过程 5.3.1 打印信息的设置 5.3.2 表格样式的设置 5.3.3 打印类的设置 5.3.4 打印数据信息 第6章 决策分析模块 6.1 设计思路 6.2 关键技术 6.2.1 游标的基本操作 6.2.2 存储过程的基本操作 6.2.3 透视表的基本概念 6.2.4 统计表的基本操作 6.2.5 单击显示右键菜单 6.3 设计过程 6.3.1 主窗体的初始化 6.3.2 透视表的筛选 6.3.3 透视表的设计 6.3.4 统计表的设计 第7章 自定义图表控件 7.1 设计思路 7.2 关键技术 7.2.1 控件的生成 7.2.2 如何在项目中添加控件 7.2.3 在“属性”对话框中添加属性 7.2.4 用GDI+绘制图形 7.2.5 如何在控件上绘制图形 7.2.6 获取扇形外弧中心点的位置 7.3 设计过程 7.3.1 向自定义控件中添加属性 7.3.2 获取绘制图表的初始值数据 7.3.3 绘制标签框 7.3.4 绘制图表中的表格 7.3.5 绘制条形图 7.3.6 绘制面形图 7.3.7 绘制饼形图 第8章 电子邮件收发模块 8.1 概述 8.2 关键技术 8.2.1 Base64编码格式 8.2.2 SMTP服务 8.2.3 POP3协议 8.2.4 使用Jmail组件接收邮件 8.2.5 邮件发送类的使用 8.2.6 使用正则表达式验证邮件格式 8.3 设计过程 8.3.1 数据库设计 8.3.2 系统登录 8.3.3 邮件发送实现 8.3.4 为邮件上传多个附件 8.3.5 邮件接收实现 8.3.6 查看邮件详细信息 8.3.7 下载附件的实现 8.3.8 删除邮件实现 8.3.9 用户管理 第9章 短信群发模块 9.1 设计思路 9.2 关键技术 9.2.1 短信猫中API函数的使用 9.2.2 短信猫中的短信接收格式 9.2.3 窗体间的互操作 9.2.4 锁定模块主窗体 9.2.5 使用ADO.NET连接Access数据库 9.3 设计过程 9.3.1 数据库设计 9.3.2 群发短信实现 9.3.3 已发送短信管理 9.3.4 接收短信实现 9.3.5 常用联系人管理 9.3.6 常用短语管理 第10章 桌面精灵模块 10.1 概述 10.2 关键技术 10.2.1 阴阳历转换算法 10.2.2 调用系统API实现鼠标穿透效果 10.2.3 修改注册表控制程序开机自启动 10.2.4 通过控制窗体透明度实现日历透明显示效果 10.2.5 拖动无标题栏窗体 10.2.6 将窗体的关闭位置写入到注册表中 10.2.7 将程序图标写入到托盘 10.3 设计过程 10.3.1 桌面精灵模块公共类设计 10.3.2 当前日期的农历、天干地支年、节日及星座显示 10.3.3 定时提醒的实现 10.3.4 日历窗体效果控制 10.3.5 转到某天、某周、某月及某年的实现 10.3.6 节日管理 10.3.7 提醒管理 第11章 文件批量处理器 11.1 概述 11.2 关键技术 11.2.1 文件流技术 11.2.2 文件解压缩技术 11.2.3 获取系统文件及文件夹图标 11.2.4 获取指定目录下的所有文件及文件夹 11.2.5 Word操作技术 11.2.6 进度条的显示 11.2.7 对ListView控件中的项进行排序 11.3 设计过程 11.3.1 主窗体预览 11.3.2 批量复制、剪切文件 11.3.3 批量复制、剪切文件夹 11.3.4 批量重命名文件 11.3.5 批量删除文件及文件夹 11.3.6 搜索文件及文件夹 11.3.7 批量压缩、解压文件 11.3.8 分割、合并文件 第12章 图片管理工具模块 12.1 概述 12.2 关键技术 12.2.1 上下移动ListBox选中项 12.2.2 将文件复制到剪切板 12.2.3 格式转换 12.2.4 图片幻灯片 12.2.5 图片旋转 12.3 设计过程 12.3.1 主窗体 12.3.2 打开图片目录 12.3.3 图片格式转换 12.3.4 设为桌面背景 12.3.5 图片特效 12.3.6 图片调节 12.3.7 图片水印 12.3.8 幻灯片放映 12.3.9 图片打印 第13章 FTP文件管理模块 13.1 设计思路 13.2 关键技术 13.2.1 架设FTP服务器 13.2.2 登录FTP服务器 13.2.3 获取服务器上文件的大小 13.2.4 向FTP服务器发送命令 13.2.5 调用系统API 13.3 设计过程 13.3.1 主窗体设计 13.3.2 登录FTP服务器 13.3.3 获取本地磁盘 13.3.4 获取指定磁盘中的文件 13.3.5 获取本地磁盘中文件的图标 13.3.6 获取FTP服务器中的所有文件 13.3.7 批量上传文件 13.3.8 批量下载文件 13.3.9 删除FTP中的文件或文件夹 第14章 魔法兔子模块 14.1 概述 14.2 关键技术 14.2.1 获取进程信息 14.2.2 获取计算机信息 14.2.3 修改注册表 14.3 设计过程 14.3.1 主窗体 14.3.2 功能菜单设计 14.3.3 系统检测 14.3.4 系统优化 14.3.5 超级工具 14.3.6 实用工具 14.3.7 任务管理器 14.3.8 选项设置 第15章 学生考试模块 15.1 设计思路 15.2 关键技术 15.2.1 获取试题数目 15.2.2 验证用户名和密码 15.2.3 随机抽取试题 15.2.4 自动评分 15.3 设计过程 15.3.1 数据库设计 15.3.2 公共类设计 15.3.3 登录验证 15.3.4 主窗体实现 15.3.5 开始考试 15.3.6 修改密码 15.3.7 分数查询 15.3.8 管理员界面 15.3.9 用户管理 15.3.10 成绩查询 15.3.11 考试设置 15.3.12 添加试题 15.3.13 修改试题 第16章 网页浏览器模块 16.1 概述 16.2 关键技术 16.2.1 网页浏览器核心控件 16.2.2 网页多页面显示 16.2.3 获取网页源码 16.3 设计过程 16.3.1 主窗体 16.3.2 查看网页源码 16.3.3 添加到收藏夹 16.3.4 整理收藏夹 第17章 电话客服管理模块 17.1 设计思路 17.2 关键技术 17.2.1 语音卡中的API函数 17.2.2 硬件语音卡驱动分析 17.2.3 窗体间传值 17.2.4 导航菜单的制作 17.3 设计过程 17.3.1 数据库设计 17.3.2 模块主窗体设计 17.3.3 自动语音处理 17.3.4 通话管理实现 17.3.5 员工管理实现 17.3.6 产品类别管理 第18章 多媒体播放器 18.1 设计思路 18.2 关键技术 18.2.1 窗体间的信息传递 18.2.2 AxWindowsMediaPlayer控件的相关应用 18.2.3 在列表框中动态移动选中的项 18.2.4 如何在文件夹中遍历文件 18.2.5 如何实现播放进度条 18.3 设计过程 18.3.1 磁性窗体的设置 18.3.2 播放窗体的设计 18.3.3 列表窗体的设计 18.3.4 歌词窗体的设计 第19章 屏幕录像模块 19.1 概述 19.2 关键技术 19.2.1 如何抓取屏幕 19.2.2 创建AVI文件 19.2.3 向AVI文件中添加视频 19.2.4 分解AVI文件 19.2.5 设置快捷键 19.3 设计过程 19.3.1 主窗体设计 19.3.2 抓图功能 19.3.3 选项设置 19.3.4 屏幕录像 19.3.5 视频分割 第20章 EXE文件加密器 20.1 设计思路 20.2 关键技术 20.2.1 FileStream对象 20.2.2 文件的读写操作 20.2.3 如何获取两个日期的月份差 20.2.4 获取两个日期的相差天数 20.2.5 载取字符串中的指定字符 20.3 设计过程 20.3.1 获取加密字符串的信息 20.3.2 对生成后的数据进行加密 20.3.3 对EXE文件进行加密 20.3.4 解密文件的设置 第21章 视频监控模块 21.1 设计思路 21.2 关键技术 21.2.1 认识视频监控卡 21.2.2 视频监控卡中API函数的使用 21.2.3 Pelco-D协议 21.2.4 串口通信技术 21.2.5 WMI类的使用 21.2.6 注册表技术 21.3 设计过程 21.3.1 视频监控实现 21.3.2 云台控制 21.3.3 色彩控制 21.3.4 图像抓拍及生成监控录像 21.3.5 定时录像设置 21.3.6 录像回放 21.3.7 注册程序 21.3.8 实时监控软件运行时间及磁盘空间 第22章 网络五子棋游戏 22.1 设计思路 22.2 关键技术 22.2.1 在下拉列表中绘制图片 22.2.2 UDP协议 22.2.3 用Socket实现信息传递的必备条件 22.2.4 自定义事件的设置 22.2.5 动态按钮的设置 22.3 设计过程 22.3.1 类库的设计 22.3.2 客户端注册模块设计 22.3.3 客户端登录模块设计 22.3.4 五子棋大厅的设计 22.3.5 对决窗体的设计 22.3.6 网络五子棋服务器窗体的设计 第23章 在线升级模块 23.1 设计思路 23.2 关键技术 23.2.1 FTP上传下载技术 23.2.2 XML文件操作 23.2.3 INI文件的读写 23.2.4 动态生成版本面板 23.2.5 使用Hashtable(哈希表)记录版本号及更新信息 23.3 类库设计过程 23.4 服务器端设计过程 23.4.1 服务器端主窗体预览 23.4.2 连接FTP服务器 23.4.3 向FTP服务器上传新版本 23.5 客户端设计过程 23.5.1 启动客户端时检测是否有新版本 23.5.2 从FTP服务器下载指定版本 23.5.3 定时升级设置 第24章 Windows应用程序打包与部署境 24.1 WindowsInstaller简介 24.2 Windows应用程序部署 24.2.1 创建部署项目 24.2.2 可选的部署功能 24.3 安装及卸载Windows程序 24.3.1 在本地计算机上安装 24.3.2 部署到其他计算机 24.3.3 卸载安装应用程序
第1章 认识C#及开发环境 1.1 C#概述 2 1.1.1 C#发展历程 2 1.1.2 C#语言编程环境 2 1.2 .NET Framework 2.0简介 2 1.2.1 什么是.NET Framework 2.0 2 1.2.2 .NET Framework 2.0特性 3 1.3 安装集成开发环境Visual Studio 2005 4 1.3.1 安装Visual Studio 2005开发环境 4 1.3.2 安装MSDN帮助 7 1.3.3 如何使用MSDN帮助 9 1.3.4 利用MSDN帮助附带的示例学习编程 11 1.4 启动Visual Studio 2005开发环境 12 1.4.1 启动Visual Studio 2005 12 1.4.2 创建项目 12 1.5 熟悉Visual Studio 2005集成开发环境 13 1.5.1 新特性 14 1.5.2 主窗口 14 1.5.3 菜单栏 14 1.5.4 工具栏 18 1.5.5 文档窗口 18 1.5.6 工具箱窗口 19 1.5.7 解决方案资源管理器窗口 20 1.5.8 属性窗口 20 1.5.9 代码编辑器 21 1.5.10 “错误列表”面板 22 1.5.11 “输出”面板 22 1.6 程序调试 22 1.6.1 断点操作 22 1.6.2 使用开始、中断和停止执行功能调试程序 23 1.6.3 单步执行 25 1.6.4 运行到程序的指定位置 25 第2章 QQ企业通 2.1 设计思路 28 2.2 关键技术 28 2.2.1 INI文件的应用 28 2.2.2 线程的应用 30 2.2.3 在Socket中发送大容量的消息 30 2.2.4 将流序列化或反序列化为对象 31 2.2.5 用InnerList列表记录信息 31 2.3 设计过程 32 2.3.1 类库的设计 33 2.3.2 客户端注册模块设计 40 2.3.3 客户端登录模块设计 42 2.3.4 客户端QQ模块设计 43 2.3.5 客户端消息发送模块设计 48 2.3.6 服务器端控制台模块设计 52 第3章 SQL数据表提取器模块 3.1 概述 56 3.2 关键技术 56 3.2.1 如何备份数据库 56 3.2.2 如何还原数据库 57 3.2.3 如何附加数据库 58 3.2.4 如何分离数据库 59 3.2.5 设置数据库模式 59 3.3 设计过程 61 3.3.1 主窗体 61 3.3.2 获取服务器名称 62 3.3.3 获取所有数据库 63 3.3.4 获取所有数据表 64 3.3.5 备份数据库 66 3.3.6 还原数据库 67 3.3.7 附加数据库 68 3.3.8 分离数据库 70 3.3.9 导出表结构 71 3.3.10 导出数据 74 第4章 万能搜索模块 4.1 设计思路 80 4.2 关键技术 80 4.2.1 如何制作一个接口程序 80 4.2.2 实现接口程序的信息互传 80 4.2.3 如何将接口程序加载到其他程序中 82 4.2.4 怎样操作RichtextBox控件的选择文本 82 4.2.5 如何获取数据表中字段的描述信息 83 4.3 设计过程 83 4.3.1 获取数据表中字段的中文信息 84 4.3.2 添加数据表的查询条件 86 4.3.3 向SQL语句中添加括号 89 4.3.4 查询生成后的SQL语句 90 4.3.5 主程序获得接口信息 92 第5章 万能打印模块 5.1 设计思路 94 5.2 关键技术 94 5.2.1 打印设置(PrintDocument类) 94 5.2.2 打印预览对话框(PrintPreview Dialog) 95 5.2.3 打印对话框(PrintDialog) 96 5.2.4 获取指定颜色值和字体样式 97 5.2.5 DataGridView控件的相关应用 97 5.3 设计过程 98 5.3.1 打印信息的设置 98 5.3.2 表格样式的设置 100 5.3.3 打印类的设置 101 5.3.4 打印数据信息 108 第6章 决策分析模块 6.1 设计思路 112 6.2 关键技术 112 6.2.1 游标的基本操作 112 6.2.2 存储过程的基本操作 115 6.2.3 透视表的基本概念 117 6.2.4 统计表的基本操作 117 6.2.5 单击显示右键菜单 118 6.3 设计过程 118 6.3.1 主窗体的初始化 119 6.3.2 透视表的筛选 127 6.3.3 透视表的设计 130 6.3.4 统计表的设计 132 第7章 自定义图表控件 7.1 设计思路 136 7.2 关键技术 137 7.2.1 控件的生成 137 7.2.2 如何在项目中添加控件 137 7.2.3 在“属性”对话框中添加属性 137 7.2.4 用GDI+绘制图形 139 7.2.5 如何在控件上绘制图形 143 7.2.6 获取扇形外弧中心点的位置 143 7.3 设计过程 144 7.3.1 向自定义控件中添加属性 144 7.3.2 获取绘制图表的初始值数据 149 7.3.3 绘制标签框 153 7.3.4 绘制图表中的表格 157 7.3.5 绘制条形图 163 7.3.6 绘制面形图 170 7.3.7 绘制饼形图 174 第8章 电子邮件收发模块 8.1 概述 180 8.2 关键技术 180 8.2.1 Base64编码格式 180 8.2.2 SMTP服务 181 8.2.3 POP3协议 184 8.2.4 使用Jmail组件接收邮件 186 8.2.5 邮件发送类的使用 188 8.2.6 使用正则表达式验证邮件格式 190 8.3 设计过程 191 8.3.1 数据库设计 191 8.3.2 系统登录 191 8.3.3 邮件发送实现 192 8.3.4 为邮件上传多个附件 193 8.3.5 邮件接收实现 194 8.3.6 查看邮件详细信息 196 8.3.7 下载附件的实现 197 8.3.8 删除邮件实现 198 8.3.9 用户管理 198 第9章 短信群发模块 9.1 设计思路 202 9.2 关键技术 202 9.2.1 短信猫中API函数的使用 202 9.2.2 短信猫中的短信接收格式 205 9.2.3 窗体间的互操作 205 9.2.4 锁定模块主窗体 206 9.2.5 使用ADO.NET连接Access数据库 206 9.3 设计过程 207 9.3.1 数据库设计 207 9.3.2 群发短信实现 209 9.3.3 已发送短信管理 213 9.3.4 接收短信实现 215 9.3.5 常用联系人管理 219 9.3.6 常用短语管理 221 第10章 桌面精灵模块 10.1 概述 226 10.2 关键技术 226 10.2.1 阴阳历转换算法 226 10.2.2 调用系统API实现鼠标穿透效果 230 10.2.3 修改注册表控制程序开机自启动 231 10.2.4 通过控制窗体透明度实现日历透明显示效果 231 10.2.5 拖动无标题栏窗体 232 10.2.6 将窗体的关闭位置写入到注册表中 232 10.2.7 将程序图标写入到托盘 232 10.3 设计过程 233 10.3.1 桌面精灵模块公共类设计 233 10.3.2 当前日期的农历、天干地支年、节日及星座显示 235 10.3.3 定时提醒的实现 240 10.3.4 日历窗体效果控制 242 10.3.5 转到某天、某周、某月及某年的实现 243 10.3.6 节日管理 245 10.3.7 提醒管理 249 第11章 文件批量处理器 11.1 概述 256 11.2 关键技术 256 11.2.1 文件流技术 256 11.2.2 文件解压缩技术 258 11.2.3 获取系统文件及文件夹图标 262 11.2.4 获取指定目录下的所有文件及文件夹 265 11.2.5 Word操作技术 266 11.2.6 进度条的显示 266 11.2.7 对ListView控件中的项进行排序 267 11.3 设计过程 267 11.3.1 主窗体预览 267 11.3.2 批量复制、剪切文件 268 11.3.3 批量复制、剪切文件夹 270 11.3.4 批量重命名文件 271 11.3.5 批量删除文件及文件夹 275 11.3.6 搜索文件及文件夹 276 11.3.7 批量压缩、解压文件 278 11.3.8 分割、合并文件 280 第12章 图片管理工具模块 12.1 概述 286 12.2 关键技术 286 12.2.1 上下移动ListBox选中项 286 12.2.2 将文件复制到剪切板 287 12.2.3 格式转换 288 12.2.4 图片幻灯片 288 12.2.5 图片旋转 289 12.3 设计过程 290 12.3.1 主窗体 290 12.3.2 打开图片目录 291 12.3.3 图片格式转换 292 12.3.4 设为桌面背景 294 12.3.5 图片特效 296 12.3.6 图片调节 300 12.3.7 图片水印 304 12.3.8 幻灯片放映 306 12.3.9 图片打印 308 第13章 FTP文件管理模块 13.1 设计思路 312 13.2 关键技术 312 13.2.1 架设FTP服务器 312 13.2.2 登录FTP服务器 317 13.2.3 获取服务器上文件的大小 318 13.2.4 向FTP服务器发送命令 319 13.2.5 调用系统API 321 13.3 设计过程 322 13.3.1 主窗体设计 322 13.3.2 登录FTP服务器 323 13.3.3 获取本地磁盘 325 13.3.4 获取指定磁盘中的文件 326 13.3.5 获取本地磁盘中文件的图标 327 13.3.6 获取FTP服务器中的所有文件 329 13.3.7 批量上传文件 333 13.3.8 批量下载文件 337 13.3.9 删除FTP中的文件或文件夹 340 第14章 魔法兔子模块 14.1 概述 344 14.2 关键技术 344 14.2.1 获取进程信息 344 14.2.2 获取计算机信息 347 14.2.3 修改注册表 349 14.3 设计过程 349 14.3.1 主窗体 349 14.3.2 功能菜单设计 350 14.3.3 系统检测 353 14.3.4 系统优化 356 14.3.5 超级工具 360 14.3.6 实用工具 367 14.3.7 任务管理器 369 14.3.8 选项设置 371 第15章 学生考试模块 15.1 设计思路 376 15.2 关键技术 376 15.2.1 获取试题数目 376 15.2.2 验证用户名和密码 377 15.2.3 随机抽取试题 377 15.2.4 自动评分 377 15.3 设计过程 378 15.3.1 数据库设计 378 15.3.2 公共类设计 380 15.3.3 登录验证 381 15.3.4 主窗体实现 382 15.3.5 开始考试 384 15.3.6 修改密码 393 15.3.7 分数查询 394 15.3.8 管理员界面 394 15.3.9 用户管理 395 15.3.10 成绩查询 399 15.3.11 考试设置 401 15.3.12 添加试题 403 15.3.13 修改试题 406 第16章 网页浏览器模块 16.1 概述 410 16.2 关键技术 410 16.2.1 网页浏览器核心控件 410 16.2.2 网页多页面显示 415 16.2.3 获取网页源码 416 16.3 设计过程 417 16.3.1 主窗体 417 16.3.2 查看网页源码 427 16.3.3 添加到收藏夹 427 16.3.4 整理收藏夹 429 第17章 电话客服管理模块 17.1 设计思路 432 17.2 关键技术 432 17.2.1 语音卡中的API函数 432 17.2.2 硬件语音卡驱动分析 437 17.2.3 窗体间传值 438 17.2.4 导航菜单的制作 438 17.3 设 计 过 程 439 17.3.1 数据库设计 439 17.3.2 模块主窗体设计 441 17.3.3 自动语音处理 444 17.3.4 通话管理实现 450 17.3.5 员工管理实现 452 17.3.6 产品类别管理 455 第18章 多媒体播放器 18.1 设计思路 460 18.2 关键技术 460 18.2.1 窗体间的信息传递 460 18.2.2 AxWindowsMediaPlayer控件的相关应用 461 18.2.3 在列表框中动态移动选中的项 463 18.2.4 如何在文件夹中遍历文件 463 18.2.5 如何实现播放进度条 464 18.3 设计过程 465 18.3.1 磁性窗体的设置 465 18.3.2 播放窗体的设计 472 18.3.3 列表窗体的设计 482 18.3.4 歌词窗体的设计 485 第19章 屏幕录像模块 19.1 概述 488 19.2 关键技术 488 19.2.1 如何抓取屏幕 488 19.2.2 创建AVI文件 488 19.2.3 向AVI文件中添加视频 489 19.2.4 分解AVI文件 490 19.2.5 设置快捷键 491 19.3 设计过程 494 19.3.1 主窗体设计 494 19.3.2 抓图功能 494 19.3.3 选项设置 496 19.3.4 屏幕录像 497 19.3.5 视频分割 503 第20章 EXE文件加密器 20.1 设计思路 512 20.2 关键技术 512 20.2.1 FileStream对象 512 20.2.2 文件的读写操作 513 20.2.3 如何获取两个日期的月份差 515 20.2.4 获取两个日期的相差天数 516 20.2.5 载取字符串中的指定字符 516 20.3 设计过程 517 20.3.1 获取加密字符串的信息 517 20.3.2 对生成后的数据进行加密 520 20.3.3 对EXE文件进行加密 522 20.3.4 解密文件的设置 524 第21章 视频监控模块 21.1 设计思路 530 21.2 关键技术 530 21.2.1 认识视频监控卡 530 21.2.2 视频监控卡中API函数的使用 532 21.2.3 Pelco-D协议 536 21.2.4 串口通信技术 538 21.2.5 WMI类的使用 540 21.2.6 注册表技术 541 21.3 设计过程 543 21.3.1 视频监控实现 543 21.3.2 云台控制 546 21.3.3 色彩控制 548 21.3.4 图像抓拍及生成监控录像 549 21.3.5 定时录像设置 551 21.3.6 录像回放 552 21.3.7 注册程序 553 21.3.8 实时监控软件运行时间及磁盘空间 554 第22章 网络五子棋游戏 22.1 设计思路 558 22.2 关键技术 558 22.2.1 在下拉列表中绘制图片 558 22.2.2 UDP协议 560 22.2.3 用Socket实现信息传递的必备条件 560 22.2.4 自定义事件的设置 561 22.2.5 动态按钮的设置 562 22.3 设计过程 564 22.3.1 类库的设计 564 22.3.2 客户端注册模块设计 569 22.3.3 客户端登录模块设计 571 22.3.4 五子棋大厅的设计 573 22.3.5 对决窗体的设计 583 22.3.6 网络五子棋服务器窗体的设计 598 第23章 在线升级模块 23.1 设计思路 610 23.2 关键技术 610 23.2.1 FTP上传下载技术 610 23.2.2 XML文件操作 611 23.2.3 INI文件的读写 613 23.2.4 动态生成版本面板 614 23.2.5 使用Hashtable(哈希表)记录版本号及更新信息 614 23.3 类库设计过程 615 23.4 服务器端设计过程 621 23.4.1 服务器端主窗体预览 621 23.4.2 连接FTP服务器 622 23.4.3 向FTP服务器上传新版本 623 23.5 客户端设计过程 626 23.5.1 启动客户端时检测是否有新版本 626 23.5.2 从FTP服务器下载指定版本 628 23.5.3 定时升级设置 630 第24章 Windows应用程序打包与部署境 24.1 Windows Installer简介 634 24.2 Windows应用程序部署 634 24.2.1 创建部署项目 634 24.2.2 可选的部署功能 636 24.3 安装及卸载Windows程序 642 24.3.1 在本地计算机上安装 642 24.3.2 部署到其他计算机 642 24.3.3 卸载安装应用程序 642
第2章 QQ企业通    2.1 设计思路 28   2.2 关键技术 28   2.2.1 INI文件的应用 28   2.2.2 线程的应用 30   2.2.3 在Socket中发送大容量的消息 30   2.2.4 将流序列化或反序列化为对象 31   2.2.5 用InnerList列表记录信息 31   2.3 设计过程 32   2.3.1 类库的设计 33   2.3.2 客户端注册模块设计 40   2.3.3 客户端登录模块设计 42   2.3.4 客户端QQ模块设计 43   2.3.5 客户端消息发送模块设计 48   2.3.6 服务器端控制台模块设计 52 第3章 SQL数据表提取器模块    3.1 概述 56   3.2 关键技术 56   3.2.1 如何备份数据库 56   3.2.2 如何还原数据库 57   3.2.3 如何附加数据库 58   3.2.4 如何分离数据库 59   3.2.5 设置数据库模式 59   3.3 设计过程 61   3.3.1 主窗体 61   3.3.2 获取服务器名称 62   3.3.3 获取所有数据库 63   3.3.4 获取所有数据表 64   3.3.5 备份数据库 66   3.3.6 还原数据库 67   3.3.7 附加数据库 68   3.3.8 分离数据库 70   3.3.9 导出表结构 71   3.3.10 导出数据 74 第4章 万能搜索模块    4.1 设计思路 80   4.2 关键技术 80   4.2.1 如何制作一个接口程序 80   4.2.2 实现接口程序的信息互传 80   4.2.3 如何将接口程序加载到其他程序中 82   4.2.4 怎样操作RichtextBox控件的选择文本 82   4.2.5 如何获取数据表中字段的描述信息 83   4.3 设计过程 83   4.3.1 获取数据表中字段的中文信息 84   4.3.2 添加数据表的查询条件 86   4.3.3 向SQL语句中添加括号 89   4.3.4 查询生成后的SQL语句 90   4.3.5 主程序获得接口信息 92 第5章 万能打印模块    5.1 设计思路 94   5.2 关键技术 94   5.2.1 打印设置(PrintDocument类) 94   5.2.2 打印预览对话框(PrintPreview Dialog) 95   5.2.3 打印对话框(PrintDialog) 96   5.2.4 获取指定颜色值和字体样式 97   5.2.5 DataGridView控件的相关应用 97   5.3 设计过程 98   5.3.1 打印信息的设置 98   5.3.2 表格样式的设置 100   5.3.3 打印类的设置 101   5.3.4 打印数据信息 108 第6章 决策分析模块    6.1 设计思路 112   6.2 关键技术 112   6.2.1 游标的基本操作 112   6.2.2 存储过程的基本操作 115   6.2.3 透视表的基本概念 117   6.2.4 统计表的基本操作 117   6.2.5 单击显示右键菜单 118   6.3 设计过程 118   6.3.1 主窗体的初始化 119   6.3.2 透视表的筛选 127   6.3.3 透视表的设计 130   6.3.4 统计表的设计 132 第7章 自定义图表控件    7.1 设计思路 136   7.2 关键技术 137   7.2.1 控件的生成 137   7.2.2 如何在项目中添加控件 137   7.2.3 在“属性”对话框中添加属性 137   7.2.4 用GDI+绘制图形 139   7.2.5 如何在控件上绘制图形 143   7.2.6 获取扇形外弧中心点的位置 143   7.3 设计过程 144   7.3.1 向自定义控件中添加属性 144   7.3.2 获取绘制图表的初始值数据 149   7.3.3 绘制标签框 153   7.3.4 绘制图表中的表格 157   7.3.5 绘制条形图 163   7.3.6 绘制面形图 170   7.3.7 绘制饼形图 174 第8章 电子邮件收发模块    8.1 概述 180   8.2 关键技术 180   8.2.1 Base64编码格式 180   8.2.2 SMTP服务 181   8.2.3 POP3协议 184   8.2.4 使用Jmail组件接收邮件 186   8.2.5 邮件发送类的使用 188   8.2.6 使用正则表达式验证邮件格式 190   8.3 设计过程 191   8.3.1 数据库设计 191   8.3.2 系统登录 191   8.3.3 邮件发送实现 192   8.3.4 为邮件上传多个附件 193   8.3.5 邮件接收实现 194   8.3.6 查看邮件详细信息 196   8.3.7 下载附件的实现 197   8.3.8 删除邮件实现 198   8.3.9 用户管理 198 第9章 短信群发模块    9.1 设计思路 202   9.2 关键技术 202   9.2.1 短信猫中API函数的使用 202   9.2.2 短信猫中的短信接收格式 205   9.2.3 窗体间的互操作 205   9.2.4 锁定模块主窗体 206   9.2.5 使用ADO.NET连接Access数据库 206   9.3 设计过程 207   9.3.1 数据库设计 207   9.3.2 群发短信实现 209   9.3.3 已发送短信管理 213   9.3.4 接收短信实现 215   9.3.5 常用联系人管理 219   9.3.6 常用短语管理 221 第10章 桌面精灵模块    10.1 概述 226   10.2 关键技术 226   10.2.1 阴阳历转换算法 226   10.2.2 调用系统API实现鼠标穿透效果 230   10.2.3 修改注册表控制程序开机自启动 231   10.2.4 通过控制窗体透明度实现日历透明显示效果 231   10.2.5 拖动无标题栏窗体 232   10.2.6 将窗体的关闭位置写入到注册表中 232   10.2.7 将程序图标写入到托盘 232   10.3 设计过程 233   10.3.1 桌面精灵模块公共类设计 233   10.3.2 当前日期的农历、天干地支年、节日及星座显示 235   10.3.3 定时提醒的实现 240   10.3.4 日历窗体效果控制 242   10.3.5 转到某天、某周、某月及某年的实现 243   10.3.6 节日管理 245   10.3.7 提醒管理 249 第11章 文件批量处理器    11.1 概述 256   11.2 关键技术 256   11.2.1 文件流技术 256   11.2.2 文件解压缩技术 258   11.2.3 获取系统文件及文件夹图标 262   11.2.4 获取指定目录下的所有文件及文件夹 265   11.2.5 Word操作技术 266   11.2.6 进度条的显示 266   11.2.7 对ListView控件中的项进行排序 267   11.3 设计过程 267   11.3.1 主窗体预览 267   11.3.2 批量复制、剪切文件 268   11.3.3 批量复制、剪切文件夹 270   11.3.4 批量重命名文件 271   11.3.5 批量删除文件及文件夹 275   11.3.6 搜索文件及文件夹 276   11.3.7 批量压缩、解压文件 278   11.3.8 分割、合并文件 280 第12章 图片管理工具模块    12.1 概述 286   12.2 关键技术 286   12.2.1 上下移动ListBox选中项 286   12.2.2 将文件复制到剪切板 287   12.2.3 格式转换 288   12.2.4 图片幻灯片 288   12.2.5 图片旋转 289   12.3 设计过程 290   12.3.1 主窗体 290   12.3.2 打开图片目录 291   12.3.3 图片格式转换 292   12.3.4 设为桌面背景 294   12.3.5 图片特效 296   12.3.6 图片调节 300   12.3.7 图片水印 304   12.3.8 幻灯片放映 306   12.3.9 图片打印 308 、

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值