LoginForm.cs代码:

   public partial class LoginForm : Form{/// <summary>/// 获取到的 Cookie/// </summary>public string Cookies { get; set; }/// <summary>/// 窗体函数/// </summary>public LoginForm(){InitializeComponent();}/// <summary>/// 窗体加载后/// </summary>private void LoginForm_Load(object sender, EventArgs e){Browser.Navigate("http://xui.ptlogin2.qq.com/cgi-bin/xlogin?appid=1006102&daid=1&style=23&hide_border=1&s_url=http://id.qq.com/cgi-bin/get_base_key?r=" + Common.GetRand());Browser.DocumentCompleted += Browser_DocumentCompleted;}/// <summary>/// 页面加载完成后/// </summary>private void Browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e){if (Browser.Document.Cookie.IndexOf("ldw") >= 0){Cookies = Browser.Document.Cookie;DialogResult = DialogResult.OK;Close();}}}

LoginForm.Designer.cs

 partial class LoginForm{private System.ComponentModel.IContainer components = null;protected override void Dispose(bool disposing){if (disposing && (components != null)){components.Dispose();}base.Dispose(disposing);}#region Windows Form Designer generated codeprivate void InitializeComponent(){this.Browser = new System.Windows.Forms.WebBrowser();this.SuspendLayout();// // Browser// this.Browser.Dock = System.Windows.Forms.DockStyle.Fill;this.Browser.Location = new System.Drawing.Point(0, 0);this.Browser.MinimumSize = new System.Drawing.Size(20, 20);this.Browser.Name = "Browser";this.Browser.ScriptErrorsSuppressed = true;this.Browser.ScrollBarsEnabled = false;this.Browser.Size = new System.Drawing.Size(434, 361);this.Browser.TabIndex = 0;// // LoginForm// this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;this.ClientSize = new System.Drawing.Size(434, 361);this.Controls.Add(this.Browser);this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;this.MaximizeBox = false;this.MinimizeBox = false;this.Name = "LoginForm";this.ShowIcon = false;this.ShowInTaskbar = false;this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;this.Text = "登录";this.Load += new System.EventHandler(this.LoginForm_Load);this.ResumeLayout(false);}#endregionprivate System.Windows.Forms.WebBrowser Browser;}

MainForm.cs代码:

public partial class MainForm : Form{/// <summary>/// 好友列表集合/// </summary>private Dictionary<string, Friend> Friends { get; set; }/// <summary>/// 窗体函数/// </summary>public MainForm(){InitializeComponent();CheckForIllegalCrossThreadCalls = false;}/// <summary>/// 登录按钮/// </summary>private void LoginButton_Click(object sender, EventArgs e){var form = new LoginForm();if (form.ShowDialog() == DialogResult.OK){var thread = new Thread(GetFriends);thread.IsBackground = true;thread.Start(form.Cookies);}}/// <summary>/// 加载好友列表/// </summary>private void GetFriends(object cookies){LoginButton.Enabled = false;SaveText.Enabled = false;var url = "http://id.qq.com/cgi-bin/qqlevel_rank?page_type=1&ldw={0}&s={1}&n={2}&r={3}";var ldw = Regex.Match(cookies.ToString(), "ldw=(?<ldw>.+?)(;|$)").Groups["ldw"].Value;var n = 50;var s = 1;var loop = true;FriendList.Items.Clear();Friends = new Dictionary<string, Friend>();while (loop){var web = new WebClient();web.Encoding = Encoding.UTF8;web.Headers.Set(HttpRequestHeader.Cookie, cookies.ToString());var response = web.DownloadString(string.Format(url, ldw, s, n, Common.GetRand()));var json = JsonMapper.ToObject(response);var count = int.Parse(json["c"].ToString());foreach (JsonData friend in json["ls"]){if (Friends.ContainsKey(friend["u"].ToString()) == false){Friends.Add(friend["u"].ToString(), new Friend(){Number = friend["u"].ToString(),Name = HttpUtility.HtmlDecode(friend["n"].ToString()),Level = int.Parse(friend["l"].ToString())});FriendList.Items.Add(new ListViewItem(new[]{friend["r"].ToString(),friend["u"].ToString(),HttpUtility.HtmlDecode(friend["n"].ToString()),friend["l"].ToString() + " 级"}));FriendList.EnsureVisible(FriendList.Items.Count - 1);}}if (Friends.Count < count) s += n;else loop = false;}LoginButton.Enabled = true;SaveText.Enabled = true;MessageBox.Show(this, "加载完成!", "提示", MessageBoxButtons.OK);}/// <summary>/// 导出为TXT文本/// </summary>private void SaveText_Click(object sender, EventArgs e){var dialog = new SaveFileDialog(){Filter = "文本文档|*.txt",DefaultExt = ".txt",AddExtension = true,OverwritePrompt = true};if  (dialog.ShowDialog() == DialogResult.OK){var text = new StringBuilder();foreach (var friend in Friends.Values){text.AppendLine(string.Format("{0}|{1}|{2}", friend.Number, friend.Name, friend.Level));}File.WriteAllText(dialog.FileName, text.ToString(), Encoding.UTF8);}}}

MainForm.Designer.cs

 partial class MainForm{/// <summary>/// 必需的设计器变量。/// </summary>private System.ComponentModel.IContainer components = null;/// <summary>/// 清理所有正在使用的资源。/// </summary>/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>protected override void Dispose(bool disposing){if (disposing && (components != null)){components.Dispose();}base.Dispose(disposing);}#region Windows 窗体设计器生成的代码/// <summary>/// 设计器支持所需的方法 - 不要修改/// 使用代码编辑器修改此方法的内容。/// </summary>private void InitializeComponent(){this.LoginButton = new System.Windows.Forms.Button();this.FriendList = new System.Windows.Forms.ListView();this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));this.columnHeader4 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));this.SaveText = new System.Windows.Forms.Button();this.SuspendLayout();// // LoginButton// this.LoginButton.Location = new System.Drawing.Point(12, 12);this.LoginButton.Name = "LoginButton";this.LoginButton.Size = new System.Drawing.Size(90, 30);this.LoginButton.TabIndex = 0;this.LoginButton.Text = "登录帐号";this.LoginButton.UseVisualStyleBackColor = true;this.LoginButton.Click += new System.EventHandler(this.LoginButton_Click);// // FriendList// this.FriendList.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {this.columnHeader1,this.columnHeader2,this.columnHeader3,this.columnHeader4});this.FriendList.FullRowSelect = true;this.FriendList.GridLines = true;this.FriendList.Location = new System.Drawing.Point(12, 48);this.FriendList.Name = "FriendList";this.FriendList.Size = new System.Drawing.Size(460, 351);this.FriendList.TabIndex = 1;this.FriendList.UseCompatibleStateImageBehavior = false;this.FriendList.View = System.Windows.Forms.View.Details;// // columnHeader1// this.columnHeader1.Text = "序号";// // columnHeader2// this.columnHeader2.Text = "QQ";this.columnHeader2.Width = 120;// // columnHeader3// this.columnHeader3.Text = "名称";this.columnHeader3.Width = 150;// // columnHeader4// this.columnHeader4.Text = "等级";this.columnHeader4.Width = 90;// // SaveText// this.SaveText.Enabled = false;this.SaveText.Location = new System.Drawing.Point(108, 12);this.SaveText.Name = "SaveText";this.SaveText.Size = new System.Drawing.Size(120, 30);this.SaveText.TabIndex = 2;this.SaveText.Text = "导出 TXT 列表";this.SaveText.UseVisualStyleBackColor = true;this.SaveText.Click += new System.EventHandler(this.SaveText_Click);// // MainForm// this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F);this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;this.ClientSize = new System.Drawing.Size(484, 411);this.Controls.Add(this.SaveText);this.Controls.Add(this.FriendList);this.Controls.Add(this.LoginButton);this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);this.MaximizeBox = false;this.MinimizeBox = false;this.Name = "MainForm";this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;this.Text = "QFriends";this.ResumeLayout(false);}#endregionprivate System.Windows.Forms.Button LoginButton;private System.Windows.Forms.ListView FriendList;private System.Windows.Forms.ColumnHeader columnHeader1;private System.Windows.Forms.ColumnHeader columnHeader2;private System.Windows.Forms.ColumnHeader columnHeader3;private System.Windows.Forms.ColumnHeader columnHeader4;private System.Windows.Forms.Button SaveText;}

项目运行结果如图:


QQ相关(一)【导出所有QQ好友】相关推荐

  1. 腾讯微博qq说说备份导出工具_QQ空间导出助手 – 日志、相册、视频、留言板、QQ 好友列表等...

    QQ空间导出助手 是一款用来导出 QQ 空间的日志.私密日志.说说.相册.留言板.QQ好友.视频为文件的 Chrome 扩展,供永久保存. 2T非常喜欢 QQ空间导出助手 介绍里的一段话: 落叶随风, ...

  2. qq群 消息导出 html,申请qq群

    首先,打开QQ. 登录你的QQ账号和密码,进入登录界面. 进入登录界面以后,点击群聊功能. 选择群聊之后,鼠标右键,选择创建一个群. 点击之后,选择你所要创建的QQ群类型. 选择好之后,添加QQ群介绍 ...

  3. 如何在注册表里面删除所有qq相关文件

    如何在注册表里面删除所有qq相关文件 win+R,输入regedit 找到下面的文件 删除所有关于QQ的文件

  4. python爬取陌生人的qq空间_Python爬取QQ空间好友说说并生成词云(超详细)

    前言 先看效果图: 思路 1.确认访问的URL 2.模拟登录你的QQ号 3.判断好友空间是否加了权限,切换到说说的frame,爬取当前页面数据,下拉滚动条,翻页继续获取 爬取的内容写入本地TXT文件中 ...

  5. QQ空间将不再支持免费备份原图?附QQ空间相册导出工具合集

    感谢您抽出 .. 阅读本文 小伙伴们注意:公众号的推送机制不再按照时间前后推送了,微信公众号信息流乱序.君哥建议大家把科技毒瘤君公众号置顶(设为星标⭐),以便第一时间看到推送,非常感谢~,方法如下图: ...

  6. C# 登录QQ网站并获取QQ相关信息

    本文以登录http://id.qq.com为例,获取用户等级.Q龄等相关信息. 本文界面使用WPF制作  技术涵盖:C#.wpf.HttpWebRequest.HttpWebResponse (.ne ...

  7. qq 电脑版导出聊天记录 用ie 浏览器可以查看

    qq 电脑版导出聊天记录 https://kf.qq.com/faq/161230MfMfqy161230q2ENVr.html 用ie 浏览器可以查看 ,chrome ,egde 不行,mht格式可 ...

  8. python实现qq登录界面_Python实现QQ界面

    Python实现QQ界面(好友列表,通信部分还未做好,没时间~~嘻嘻) 项目环境: (1)OS:Linux RedHat6.3 (2)Language:Python (3)Lib:pygtk,gtk ...

  9. 开启QQ登录保护仍被盗号——QQ安全机制全面分析

    1.前言 周围总是有些同学QQ被盗号,攻击者盗取账号后会继续去欺骗列表里的好友,形成链式反应.危害比较大. 腾讯QQ安全中心提供了登录保护机制,如图:   这是腾讯为QQ添加第二层保护,在开启登录保护 ...

  10. 你真的榨干QQ潜能了吗?QQ技巧全面分享

    QQ是我们每天必用的工具,但你真的玩转它了吗?除了聊天.视频.截图等常用操作,你还能说出那些高级技巧?其实,你真的不了解QQ! 练练通杀技 董师傅:下面这3个技巧,董师傅认为最有价值的通用技巧,适合每 ...

最新文章

  1. 将客户端移植到Linux和MAC OS
  2. 算法整理:Boyer-Moore 投票算法
  3. 一起谈.NET技术,Expression Blend中文教程 - 开篇
  4. boost::allocator_destroy的实例
  5. 【Linux系统编程】Linux 进程调度浅析
  6. 11.reindex操作
  7. 《Spring 5 官方文档》5. 验证、数据绑定和类型转换(二)
  8. C# lambda与表达式树
  9. php魔法函数用途,PHP中的Magic Methods (魔术函数)
  10. 企业数据可视化的优势
  11. C/c++输入输出函数
  12. java 强制声明为引用_JAVASERIPT高级程序设计35~45页
  13. p6spy oracle,MyBatis集成P6Spy显示实际的SQL(代码教程)
  14. html拾色器没效果,用html和js写一个拾色器
  15. 计算机硕士专业有哪些课程,计算机专业考研科目有哪些
  16. panic 和 recover
  17. Mapreduce统计
  18. 发音到底是 /s/ 还是 /z/ ?
  19. 计算机毕业设计选题、开题、答辩、模板大全(有源码)
  20. MySQL学习笔记一之基础架构

热门文章

  1. 英文文献翻译(白嫖版)
  2. oracle试算平衡表查询,试算平衡表
  3. App下载安装量如何统计
  4. 【调剂】中科院上海微系统与信息技术研究所2023年高校联培项目招收调剂生的通知...
  5. 30系列显卡安装深度学习pytorch坏境
  6. 幸运童年童装 研发制造营销
  7. AI绘画网站最全收集!!
  8. 无线路由器常用的五种工作模式详细介绍
  9. 关于SOTIF预期功能安全的理解
  10. 如何在windows上使用VMware安装macOS虚拟机