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

gongxiang0308 2013-04-22 04:23:24
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/
...全文
1711 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
oysd0628 2014-03-14
  • 打赏
  • 举报
回复
引用 9 楼 gongxiang0308 的回复:
[quote=引用 6 楼 Eric_RushM 的回复:] 没获取到呀。一片空白。为什么?
不会吧 你去原文地址那下载个demo测试下,可能是你代码写错了吧[/quote] 你不是用4.5测试的吧?
oysd0628 2014-02-18
  • 打赏
  • 举报
回复
在4.5的情况下的吧?在4.0的条件下获取失败。求解决方案。
异常异长 2014-01-02
  • 打赏
  • 举报
回复
感谢lz的技术分享。
jiaoshiyao 2014-01-02
  • 打赏
  • 举报
回复
哦。。。。。
孤零落叶寒 2014-01-01
  • 打赏
  • 举报
回复
使用win api搜索qqexchangewnd_shortcut_prefix_QQ号 这类的都可以获取
孤零落叶寒 2014-01-01
  • 打赏
  • 举报
回复
引用 24 楼 haiyun141 的回复:
有网页版的吗?我的QQ:364027545
我有,需要吗?网页获取登录的QQ
wanghui0380 2013-12-31
  • 打赏
  • 举报
回复
呵呵,根本不需要如此滴 qq那个玩意是用滴一个控件完成滴,你直接调用这个控件即可 不过他不是ACTiveX控件,而是NPAPI控件,so,你只需要搜索一下C#里怎么调用NPAPI控件即可直接得到结果
小猪八Q 2013-12-31
  • 打赏
  • 举报
回复
haiyun141 2013-12-31
  • 打赏
  • 举报
回复
有网页版的吗?我的QQ:364027545
NET_saber 2013-04-23
  • 打赏
  • 举报
回复
学习了,感觉不错
Hi幸福来敲门 2013-04-23
  • 打赏
  • 举报
回复
csdn_风中雪狼 2013-04-23
  • 打赏
  • 举报
回复
引用 15 楼 u010224199 的回复:
可以获取到密码的吗
呵呵,这个有难度
苍穹无痕 2013-04-23
  • 打赏
  • 举报
回复
长见识,除了外挂编程,这样也行呀!
flashrhx2010 2013-04-23
  • 打赏
  • 举报
回复
思路不错,通过访问腾讯的快捷登陆接口来取信息。
dylike 2013-04-22
  • 打赏
  • 举报
回复
这个方法出来很久了,有可能TX很快又会改,一改就OVER了
u010224199 2013-04-22
  • 打赏
  • 举报
回复
可以获取到密码的吗
失落的神庙 2013-04-22
  • 打赏
  • 举报
回复
是要加载一些tx的一些插件的 如果本来IE没装就获取不到的
gongxiang0308 2013-04-22
  • 打赏
  • 举报
回复
引用 6 楼 Eric_RushM 的回复:
没获取到呀。一片空白。为什么?
嗯 对 这个主要是对webbrowser的操作。很简单的 适合初学者学习学习
gongxiang0308 2013-04-22
  • 打赏
  • 举报
回复
引用 2 楼 caozhy 的回复:
感谢lz的技术分享。
呵呵 多谢支持
gongxiang0308 2013-04-22
  • 打赏
  • 举报
回复
引用 8 楼 Eric_RushM 的回复:
string[] temps = innertext.Split(' '); //我们把昵称和(qq号)分离 分离有小小的问题,要是名称中也存在着空格那就分离出问题 小小的改善: string[] temps = innertext.Split('('); 这样比较安全
阁下所言甚是,是我欠考虑。多谢提醒
加载更多回复(10)

110,548

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧