实例介绍
自动登录qq空间,获取最近访客列表.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
Timer terAutologin = new Timer();
public Form1()
{
InitializeComponent();
terAutologin.Enabled = true;
terAutologin.Interval = 3 * 1000;
terAutologin.Tick = ter_Tick;
}
void ter_Tick(object sender, EventArgs e)
{
if(wb1.Document==null)
{
return;
}
HtmlElement dialog_content_1 = wb1.Document.GetElementById("dialog_content_1");
if (dialog_content_1 == null)
{
return;
}
var frame = wb1.Document.Window.Frames[0];
if (frame==null)
{
return;
}
if (frame.Document==null)
{
return;
}
// iframe
HtmlElement u = frame.Document.GetElementById("u");
u.InnerText = "171586098";
HtmlElement p = frame.Document.GetElementById("p");
p.InnerText = "*************";
p.SetAttribute("value", "********");
HtmlElement login_button = frame.Document.GetElementById("login_button");
login_button.InvokeMember("click");
terAutologin.Stop();
}
private void Form1_Load(object sender, EventArgs e)
{
ssl1.Text = string.Empty;
txtUrl.Text = "http://user.qzone.qq.com/14371939";
wb1.ScriptErrorsSuppressed = true;
wb1.Navigate("http://user.qzone.qq.com/14371939/main");
}
private void btnGO_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(txtUrl.Text))
{
wb1.Navigate(txtUrl.Text);
ssl1.Text = txtUrl.Text " Navigated";
}
}
private void wb1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
System.Diagnostics.Trace.WriteLine(e.Url.ToString());
// http://g.cnc.qzone.qq.com/cgi-bin/friendshow/cgi_get_visitor_simple?uin=4371939&type=1&mask=3&rd=0.7801240284461528&_=1397644130601&g_tk=9281770
ssl1.Text = e.Url.ToString() " Completed";
tryRead();
}
private void btnTest_Click(object sender, EventArgs e)
{
tryRead();
}
private void tryRead()
{
if (wb1.Document == null)
{
return;
}
HtmlElement pagediv = wb1.Document.GetElementById("visitor_list_page_con");
if (pagediv==null)
{
return;
}
//若分页内容存在,则表示已经加载过了.
if(pagediv.Children.Count>0)
{
handlerAbc(null,null);
return;
}
//模拟点击 "最近访客"
var aa = pagediv.Parent.Parent.FirstChild.Children[2];
aa.InvokeMember("click");
//给访问列表的容器绑定一个事件...回调时就能获取到.
HtmlElement guestlist = pagediv.Parent.FirstChild;
//ul.RaiseEvent
guestlist.AttachEventHandler("onpropertychange", new EventHandler(handlerAbc));
}
private void handlerAbc(Object sender, EventArgs e)
{
HtmlElement div = wb1.Document.GetElementById("visitor_list_page_con");
HtmlElement guestlist = div.Parent.FirstChild;
if (guestlist.InnerHtml.IndexOf("QZONE.FrontPage.showLoginBox") > -1)
{
HtmlElement alogin = guestlist.GetElementsByTagName("a")[0];
alogin.InvokeMember("click");
// 使用定时器.检测登录窗口的出现..
terAutologin.Start();
return;
}
else
{
System.Text.StringBuilder sb = new StringBuilder();
// 取回里面的内容?
foreach (HtmlElement li in guestlist.Children)
{
string qq = li.GetAttribute("uin");
string visitname = li.Children[1].FirstChild.InnerText;
string visittime = li.Children[1].Children[1].InnerText;
sb.AppendLine(qq visitname visittime);
}
MessageBox.Show(sb.ToString());
}
}
}
}
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论