手把手教你C#简单实现获取本地登陆的QQ号
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 namespace GetMyQQ 2 { 3 public partial class frm_GetQQ : Form 4 { 5 6 WebBrowser web = new WebBrowser(); 7 public frm_GetQQ() 8 { 9 InitializeComponent(); 10 lvQQ.Columns.Add("昵称",100); //首先在listview中添加两个标题列 11 lvQQ.Columns.Add("QQ号码",100); 12 lbshow.Text = ""; 13 lvQQ.GridLines = true; //设置listview为显示网格线 14 lvQQ.View = View.Details;//设置显示方式 15 } 16 17 private void btnGet_Click(object sender, EventArgs e) 18 { 19 lvQQ.Items.Clear();//初始化listview集合 20 web.Navigate("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");//让webbrowser加载这个地址,这是腾讯网自动登录,我们就是利用腾讯的自动检测来获取我们登录的QQ号 21 web.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(WebCompleted); //给WebBrowserDocumentCompletedEventHandler这个委托注册一个方法,这个方法写在下面了 22 23 } 24 25 /// <summary> 26 /// 实现委托的方法注意要和委托定义的一样哦 27 /// </summary> 28 /// <param name="sender"></param> 29 /// <param name="e"></param> 30 void WebCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 31 { 32 //为了保险起见 我们在这再次判断是否加载完成 33 if (web.ReadyState == WebBrowserReadyState.Complete && web.IsBusy == false) 34 { 35 HtmlDocument doc = web.Document; //抓取网页 36 HtmlElement hem = doc.GetElementById("list_uin");//这里就像js里面一样通过ID来查找对象 37 while (doc == null || hem == null) //网络操作总是伴随着一些不可预知的异常,所以在这以防万一对象为空,我们继续判断 38 { 39 40 Application.DoEvents();//如果为空,就转交控制权 41 } 42 43 for (int i = 0; i < hem.Children.Count; i++) 44 { 45 string innertext = hem.Children[i].InnerText.Trim(); //获取到昵称和QQ号,格式是这样的 昵称(qq号) 46 string[] temps = innertext.Split(' '); //我们把昵称和(qq号)分离 47 string name = temps[0]; //得到昵称 48 string num = temps[1]; //得到QQ号 49 num = num.Replace("(", "").Replace(")", ""); //因为这里我们得到的QQ号还是(qq号)带有括号,所以需要去掉括号 50 ListViewItem item = new ListViewItem(); //创建Listviewitem对象 51 item.Text = name; //将昵称设置为文本 52 item.SubItems.Add(num);//将QQ号添加进子项 53 lvQQ.Items.Add(item);//最后将listviewitem对象添加进listview 54 } 55 lbshow.Text = "完成";//OK 搞定收工 56 } 57 else 58 { 59 lbshow.Text = "网页错误。请重试"; 60 61 } 62 } 63 64 } 65 66 67 }
原文地址及demo下载地址:http://www.qqruoshui.com/index.php/a-simple-implementation-of-c-to-obtain-the-local-login-qq/