獲取當前登錄的QQ號碼
原理很簡單:
利用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&param=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