• 一个浏览器循环刷新网页的例子


    class Program
        {
            public static void Main(string[] args)
            {
                int i=0;
                String[] urlarray = new String[] { "http://www.baidu.com/", "http://msdn.microsoft.com/", "http://www.qidian.com/Default.aspx" };
                RefreshPage repa = new RefreshPage(0, 1, urlarray, false);
                while (i < 7)
                {
                    repa.Next();
                    repa.FindCurrent = "No";
                    i++;
                }
            }      
        }
    View Code
     class RefreshPage
        {
            int CurrentPage; 
            int NextPage;
            String[] UrlArray;
            public String FindCurrent="No";
            bool Stop;
            public RefreshPage(int CurrentPage, int NextPage, String[] UrlArray, bool Stop)
            {
                this.CurrentPage = CurrentPage;
                this.NextPage = NextPage;
                this.UrlArray = UrlArray;
                this.Stop = Stop;
            }
            public void Next()
            {
                SHDocVw.ShellWindows sw = new SHDocVw.ShellWindows();
                while (FindCurrent == "No")
                {
                    foreach (SHDocVw.InternetExplorer Iweb in sw)
                    {
    
                        if (Iweb.LocationURL.StartsWith(UrlArray[CurrentPage]))
                        {
                            HTMLDocument doc2 = Iweb.Document as HTMLDocument;
                            HTMLScriptElement script = (HTMLScriptElement)doc2.createElement("script");
                            script.text = "function newDoc(url){window.location.assign(url)} t=setTimeout("newDoc(" + "'" + UrlArray[NextPage] + "'" + ")", 5000)";
                            HTMLBody body = doc2.body as HTMLBody;
                            if (body != null)
                            {
                                body.appendChild((IHTMLDOMNode)script);
                                FindCurrent = "Yes";
                            }
                            else
                                continue;
                        }
                    }
                }
                CurrentPage+= 1;
                NextPage += 1;
                if (NextPage >= UrlArray.Length)
                    NextPage = 0;
                if (CurrentPage >= UrlArray.Length)
                    CurrentPage = 0;
                System.Console.WriteLine("current");
            }
        }
    View Code

    1. 首先需要引用两个dll

    SHDocVw.dll

    mshtml.dll

    2. 本例子是按照所给出的数组,数组中存储的是将要循环访问的url,程序访问打开的网页寻找与数组的第一个url匹配的值,并且给他添加脚本,使该网页跳转到另一个url,即

    数组的下一个值,使数组中所有url循环访问到。


    3. 变量FindCurrent非常重要,由于浏览器打开一个网页需要时间,而程序读取确是,很快的,如果没有这个变量的判断,则代码会一直读不到当前要寻找的url。

    while (FindCurrent == "No")

    同理读取到当前url,但是html内容还没有load完,也无法读到html 的body,会导致一直读不到html body,下面这个判断也非常重要

    if (body != null)

        

  • 相关阅读:
    exe自启动的几种方式
    关于 CShellManager 的作用
    DLL 调用 对话框 以及 如何获取调用dll 应用程序(窗口程序)的窗口句柄
    VC++ 2010 创建高级Ribbon界面详解(4)
    HPU--1221 Fibonacci数列
    取一个数的前几位
    HDU--1875 畅通工程再续
    POJ--2485 Highways
    【模板】HDU--1233 畅通工程
    hdu--1856 More is better
  • 原文地址:https://www.cnblogs.com/bianren/p/3718236.html
Copyright © 2020-2023  润新知