原理很简单:
利用QQ空间的快速登录方式可以检测到在本机登录的QQ号码,通过分析这个快速登录页面可以获取到一个地址
再通过WebBrowser控件加载这个页面,等待网页加载完毕,分析html就可以提取出当前在本登录的所有QQ号码。
代码:
using System; using System.Windows.Forms; namespace GetLoginQQDemo { public partial class Form1 : Form { private string url = "http://xui.ptlogin2.qq.com/cgi-bin/qlogin?domain=qq.com&lang=2052&qtarget=1&jumpname=&appid=549000912&ptcss=undefined¶m=u1%253Dhttp%25253A%25252F%25252Fqun.qzone.qq.com%25252Fgroup&css=&mibao_css=&s_url=http%253A%252F%252Fqun.qzone.qq.com%252Fgroup&low_login=0&style=12&authParamUrl=&needVip=1&ptui_version=10028"; private WebBrowser web = new WebBrowser(); public Form1() { InitializeComponent(); lvwUins.Columns.Add("昵称", 100); lvwUins.Columns.Add("QQ号码", 100); web.Url = new Uri(url); } private void button1_Click(object sender, EventArgs e) { if(web.ReadyState != WebBrowserReadyState.Complete){ MessageBox.Show("网页尚未加载完毕,请稍等."); return; } lvwUins.Items.Clear(); HtmlDocument doc = web.Document; HtmlElement uinList = doc.GetElementById("list_uin"); if(uinList != null){ for (int i = 0; i < uinList.Children.Count; i++) { string str = uinList.Children[i].InnerText.Trim(); //分割昵称和QQ号码 string[] temp = str.Split(' '); string nick = temp[0]; string uin = temp[1]; //去除括号 uin = uin.Replace("(", "").Replace(")", ""); ListViewItem item = new ListViewItem(); item.Text = nick; item.SubItems.Add(uin); lvwUins.Items.Add(item); } } } } }
运行截图:
源码:http://pan.baidu.com/share/link?shareid=474605&uk=1678089569
最新评论