110,534
社区成员
发帖
与我相关
我的任务
分享
public void ShowObj(WebBrowser webBrowser, int kcp)
{
//////////////String ss = "";
HtmlElementCollection obj = webBrowser.Document.GetElementsByTagName("IMG");
mbf.textBoxMessage.AppendText(kcp + "****************" + kcp + Environment.NewLine);
mbf.textBoxMessage.AppendText(Program.mf.cf.f8 + Environment.NewLine);
mbf.textBoxMessage.AppendText(kcp + "****************" + kcp + Environment.NewLine);
for (int i = 0; i < obj.Count; i++)
{
if (obj[i].GetAttribute("src") == "http://km.sgcc.com.cn:8080/km/images/icons/download.gif")
{
if (obj[i].Parent.TagName == "A")
{
String times = obj[i].Parent.Parent.Parent.Parent.Parent.Parent.Parent.Parent.Parent.FirstChild.FirstChild.Children[2].FirstChild.FirstChild.FirstChild.Children[1].OuterText.Trim();
String years = times.Substring(0, 4);
int yeari = Int32.Parse(years);
String months = times.Substring(5, 2);
int monthi = Int32.Parse(months);
String days = times.Substring(8, 2);
int dayi = Int32.Parse(days);
DateTime dt = new DateTime(yeari, monthi, dayi);
if (dt > startDT && dt < endDT)
{
// System.Threading.Thread.Sleep(10000);
// MessageBox.Show("danji");
Program.mf.cf.f8 = 0;
mbf.textBoxMessage.AppendText(Program.mf.cf.f8 + Environment.NewLine);
if (kcp > 1)
{
obj[i].Parent.Click += new HtmlElementEventHandler(Parent_Click);
obj[i].Parent.InvokeMember("click");
System.Threading.Thread.Sleep(100);
//MessageBox.Show(obj[i].Parent.OuterHtml+Environment.NewLine+Environment.NewLine+
//"等待文件下载框弹出,并自动关闭", "下载等待");
}
else
{
obj[i].Parent.Click += new HtmlElementEventHandler(Parent_Click);
obj[i].Parent.InvokeMember("click");
//MessageBox.Show(obj[i].Parent.OuterHtml + Environment.NewLine + Environment.NewLine +
//"等待文件下载框弹出,并自动关闭", "下载等待");
}
//MessageBox.Show(times,"时间");
//mbf.textBoxMessage.AppendText(times + Environment.NewLine);
////////ss += "\"" + times + Environment.NewLine + Environment.NewLine;
}
}
}
}
Program.mf.cf.f8 = -1;
}
void Parent_Click(object sender, HtmlElementEventArgs e) { MessageBox.Show("等待文件下载框弹出,并自动关闭", "下载等待"); }
//////////////////////////////////////////////////////////////////////page 1
ShowObj(webBrowserMain, 1);
//////////////////////////////////////////////////////////////////////page next
HtmlElement nextPage = webBrowserMain.Document.GetElementById("setpage");
while (nextPage.FirstChild.Children[nextPage.FirstChild.Children.Count - 1].TagName == "A" && nextPage.FirstChild.Children[nextPage.FirstChild.Children.Count - 1].InnerText == "下一页")
{
nextPage.FirstChild.Children[nextPage.FirstChild.Children.Count - 1].InvokeMember("click");
pcon++;
cf.f4 = 0;
MessageBox.Show("正在打开第" + pcon + "页,请稍后……", "第" + pcon + "页");
ShowObj(webBrowserMain, pcon);
nextPage = webBrowserMain.Document.GetElementById("setpage");
}
void timerConfig_Tick(object sender, EventArgs e)
{
if (f8 == 0)
{
Program.mf.mbf.textBoxMessage.AppendText("等待下载框弹出……" + Environment.NewLine);
IntPtr ptr = FindWindow(null, "文件下载");
if (ptr != IntPtr.Zero)
{
System.Threading.Thread.Sleep(100);
PostMessage(ptr, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
//IntPtr ptr1 = FindWindow(null, "下载等待");
//if (ptr1 != IntPtr.Zero)
//{
// PostMessage(ptr1, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
//}
//StartKiller(100, "下载等待");
f8 = 1;
f9 = 0;
Program.mf.mbf.textBoxMessage.AppendText(Program.mf.cf.f8 + Environment.NewLine);
}
}
}
var a=1;
var b= a+1;
这种顺序执行的代码,可能每一个人都会写。这没有什么门槛。
但是如果现实需要你对程序执行环境知识的理解稍微复杂一点,这就需要学习了。WebBrowserDocumentCompletedEventHandler proc1 = null;
WebBrowserDocumentCompletedEventHandler proc2 = null;
proc1 = new WebBrowserDocumentCompletedEventHandler((sender, e) =>
{
if (this.webBrowser1.ReadyState == WebBrowserReadyState.Complete)
{
this.webBrowser1.DocumentCompleted -= proc1;
this.webBrowser1.DocumentCompleted += proc2;
this.webBrowser1.Navigate("http://bbs.csdn.net/topics/390650774");
}
});
proc2 = new WebBrowserDocumentCompletedEventHandler((sender, e) =>
{
if (this.webBrowser1.ReadyState == WebBrowserReadyState.Complete)
{
this.webBrowser1.DocumentCompleted -= proc2;
this.webBrowser1.Navigate("http://bbs.csdn.net/topics/390651044");
}
});
this.webBrowser1.DocumentCompleted += proc1;
this.webBrowser1.Navigate("http://bbs.csdn.net/");
这里,等google页面真正完全加载完毕,才会导航到第二个页面。同样地,等完全加载完毕,才会去执行proc2。
当页面还有某些内容没有下载完毕(例如某个js文件、某个图片),则不会向下执行。