zoukankan      html  css  js  c++  java
  • 如何判断axwebbrowser中的一段脚本已经执行完毕

    如何判断axwebbrowser中的一段脚本已经执行完毕

    PS:Document_Complete   是可以捕捉的到的 

    但是一个网页的加载会捕捉多次,需要结合  webBrowser1_ProgressChanged事件   来确定为一的一次加载完毕操作 ,

    同时参考 http://www.cnblogs.com/LYunF/archive/2012/08/31/2665200.html

    注意:其中的 autoEventReadUrlOk 被触发后会自动关闭

            private void webBrowser1_ProgressChanged(object sender, WebBrowserProgressChangedEventArgs e)
            {
                String strMsg = String.Format(@"e.CurrentProgress == {0} && e.MaximumProgress == {1} && OldProgress == {2} sender={3}",
                                              e.CurrentProgress, e.MaximumProgress, OldProgress, sender.GetHashCode().ToString());
                Debug.WriteLine(strMsg);
                
                if (ProcClass.nThreadStep ==2)
                {
                    //Debug.WriteLine(strMsg);
                    if (e.CurrentProgress == 0 && e.MaximumProgress == 0 )//&& (-1 == OldProgress  || OldProgress == 10000))
                    {
                        ProcClass.autoEventReadUrlOk.Set();
                        Debug.WriteLine("!!!ok");
                    }
                }
                OldProgress = e.CurrentProgress;
            }

    事件触发后的处理

               //  sec.2  跟踪 Webbrowser加载过程,直到 IE 加载完毕
                ProcClass.nThreadStep = 2;
                ProcClass.autoEventReadUrlOk.WaitOne(45000);
                //10秒内没有新的进度进来才继续
                TimeSpan pretime = new TimeSpan(DateTime.Now.Ticks);
                TimeSpan curtime = new TimeSpan(DateTime.Now.Ticks);
                TimeSpan delttime = curtime.Subtract(pretime).Duration();
                while (delttime.Ticks < 100000000)   
                {
                    curtime = new TimeSpan(DateTime.Now.Ticks);
                    delttime = curtime.Subtract(pretime).Duration();
                    if ( ProcClass.autoEventReadUrlOk.WaitOne(1000) )
                    {
                        //  收到的新的消息
                        pretime = new TimeSpan(DateTime.Now.Ticks);
                    }
                }
                ProcClass.nThreadStep = 3;
  • 相关阅读:
    数据仓库 VS 数据库
    准确率,精确率,召回率,F-measure 之间的关系
    OpenCV——查找、绘制轮廓
    OpenCV——仿射变换
    OpenCV函数 重映射
    Hough变换原理
    霍夫变换(直线检测、圆检测)
    边缘检测算子+滤波总结
    图像滤波—opencv函数
    图像滤波
  • 原文地址:https://www.cnblogs.com/carl2380/p/2689317.html
Copyright © 2011-2022 走看看