当前位置:编程学习 > C#/ASP.NET >>

手把手教你C#简单实现获取本地登陆的QQ号

View Code 
 namespace GetMyQQ
 {
     public partial class frm_GetQQ : Form
     {
 
         WebBrowser web = new WebBrowser();
         public frm_GetQQ()
         {
             InitializeComponent();
             lvQQ.Columns.Add("昵称",100);  //首先在listview中添加两个标题列
             lvQQ.Columns.Add("QQ号码",100);
             lbshow.Text = "";
             lvQQ.GridLines = true; //设置listview为显示网格线
             lvQQ.View = View.Details;//设置显示方式
         }
 
         private void btnGet_Click(object sender, EventArgs e)
         {
             lvQQ.Items.Clear();//初始化listview集合
             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号
             web.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(WebCompleted);           //给WebBrowserDocumentCompletedEventHandler这个委托注册一个方法,这个方法写在下面了     
                
         }
 
         /// <summary>
         /// 实现委托的方法注意要和委托定义的一样哦
         /// </summary>
         /// <param name="sender"></param>
         /// <param name="e"></param>
         void WebCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
         {
             //为了保险起见 我们在这再次判断是否加载完成
             if (web.ReadyState == WebBrowserReadyState.Complete && web.IsBusy == false)
             {
                 HtmlDocument doc = web.Document; //抓取网页
                 HtmlElement hem = doc.GetElementById("list_uin");//这里就像js里面一样通过ID来查找对象
                 while (doc == null || hem == null)  //网络操作总是伴随着一些不可预知的异常,所以在这以防万一对象为空,我们继续判断
                 {
                  
                     Application.DoEvents();//如果为空,就转交控制权
                 }
                                
                 for (int i = 0; i < hem.Children.Count; i++)
                 {
                     string innertext = hem.Children[i].InnerText.Trim(); //获取到昵称和QQ号,格式是这样的  昵称(qq号)
                     string[] temps = innertext.Split(' '); //我们把昵称和(qq号)分离
                     string name = temps[0]; //得到昵称
                     string num = temps[1]; //得到QQ号
                     num = num.Replace("(", "").Replace(")", ""); //因为这里我们得到的QQ号还是(qq号)带有括号,所以需要去掉括号
                     ListViewItem item = new ListViewItem(); //创建Listviewitem对象
                     item.Text = name;  //将昵称设置为文本
                     item.SubItems.Add(num);//将QQ号添加进子项
                     lvQQ.Items.Add(item);//最后将listviewitem对象添加进listview
                 }
                 lbshow.Text = "完成";//OK  搞定收工
             }
             else
             {
                 lbshow.Text = "网页错误。请重试";
                
             }
         }
 
     }
 
       
 }


原文及domo下载地址:http://www.qqruoshui.com/index.php/a-simple-implementation-of-c-to-obtain-the-local-login-qq/ QQ C# webbrowser 对象 网页抓包 --------------------编程问答--------------------  感谢LZ分享. --------------------编程问答-------------------- 感谢lz的技术分享。 --------------------编程问答--------------------

虽然意义不大,,但是可以学习下C#操作WebBrowser.. --------------------编程问答-------------------- 要是能获取密码就更好了`` --------------------编程问答--------------------
谢谢分享 --------------------编程问答-------------------- 没获取到呀。一片空白。为什么? --------------------编程问答-------------------- 这个是获取已登录的QQ号吧 --------------------编程问答-------------------- string[] temps = innertext.Split(' '); //我们把昵称和(qq号)分离
分离有小小的问题,要是名称中也存在着空格那就分离出问题
小小的改善:
string[] temps = innertext.Split('(');
这样比较安全 --------------------编程问答--------------------
引用 6 楼 Eric_RushM 的回复:
没获取到呀。一片空白。为什么?

不会吧 你去原文地址那下载个demo测试下,可能是你代码写错了吧 --------------------编程问答--------------------
引用 6 楼 Eric_RushM 的回复:
没获取到呀。一片空白。为什么?

登录QQ以后再试试 --------------------编程问答--------------------
引用 8 楼 Eric_RushM 的回复:
string[] temps = innertext.Split(' '); //我们把昵称和(qq号)分离
分离有小小的问题,要是名称中也存在着空格那就分离出问题
小小的改善:
string[] temps = innertext.Split('(');
这样比较安全

阁下所言甚是,是我欠考虑。多谢提醒 --------------------编程问答--------------------
引用 2 楼 caozhy 的回复:
感谢lz的技术分享。

呵呵 多谢支持 --------------------编程问答--------------------
引用 6 楼 Eric_RushM 的回复:
没获取到呀。一片空白。为什么?

嗯 对 这个主要是对webbrowser的操作。很简单的
 适合初学者学习学习 --------------------编程问答-------------------- 是要加载一些tx的一些插件的  如果本来IE没装就获取不到的 --------------------编程问答-------------------- 可以获取到密码的吗 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 这个方法出来很久了,有可能TX很快又会改,一改就OVER了 --------------------编程问答--------------------
引用 4 楼 xjieloving 的回复:
要是能获取密码就更好了``

嘎嘎嘎嘎。。。 --------------------编程问答--------------------
引用 15 楼 u010224199 的回复:
可以获取到密码的吗

呵呵,这个有难度 --------------------编程问答-------------------- --------------------编程问答-------------------- 学习了,感觉不错 --------------------编程问答-------------------- 思路不错,通过访问腾讯的快捷登陆接口来取信息。 --------------------编程问答-------------------- 长见识,除了外挂编程,这样也行呀!
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,