最近在弄WebBrowser 自动填表的一个东东,在等待网页加载时程序基本属于假死状态。
想把这个操作放到一线程里,但好像WebBrowser不能跨线程操作。
现在单个页面填表基本实现,线程加载一个页面也可以实现。
现在的问题是怎么才能让这个填表过程在用户的眼前逐步完成。如先填用户名再填密码等操作。

解决方案 »

  1.   

    private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
            { 
                HtmlElement bt = this.webBrowser1.Document.GetElementById("submitFormBtnA"); 
                if (bt != null) 
                { 
                    backgroundWorker1.RunWorkerAsync("submit");
                } 
            }         private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
            {
                hread.Sleep(2000);
                HtmlElement ad = this.webBrowser1.Document.GetElementById("submitFormBtnA");
                ad.InvokeMember("click"); 
            }        private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
            {        }
      

  2.   

    这些只能处理带id的元素,对于没有id 元素,你肯能需要枚举页面上的元素,然后根据类型或者其他信息发送字符消息,这对于那些加密控件,比如银行密码控件等是有用的
      

  3.   

    backgroundWorker,这个没怎么用过,还请指点下backgroundWorker1.RunWorkerAsync("submit");这的参数在哪用到的呀?
    没看明白,有知道的,给解释下,谢谢~
      

  4.   

    你先给个测试页,我帮你调试好代码给你。
    另外wuyq11是机器人回帖刷分,基本是复制别处代码,别指望它能第二次回答你的问题。
      

  5.   

    用委托就可以跨线程了捏..
    WebBrowser 自动填表 我也研究过一段时间..怎么才能让这个填表过程在用户的眼前逐步完成。如先填用户名再填密码等操作  这个我真的不能理解你要表达的是什么..
      

  6.   

    用户登录一次只能一个,除非退出前面一个,因为登录信息是在本地Cookies里保存的。另外百度登录页我做不到,因为它涉及到验证码,验证码图片识别这个不会弄,你找个不需要验证码的登录页吧。
      

  7.   

    是我表达不清吗?不好意思
    也不能算是逐步完成,首先,填表的前提就是等待页面加载完成,完成后再填表,再提交表单,这个过程是在webBrowser里边完成,可以给用户看到,也就是说能让人家看到页面的跳转和刷新。不知道我表达清了吗?
      

  8.   


    这个过程是要网页来实现的。验证码.net里面很多。
    给你两个学习链接或许对你有帮助
    http://hi.baidu.com/cbf6/blog/item/779dc4005d6c8e1b738b657d.html
    http://hi.baidu.com/lujinling321/blog/item/30cd841ed7970ec7a7866995.html
      

  9.   

    首先,感谢wem520,功能基本实现了,现在还是出现假死状态,就是在对页面进行处理时!
    这个程序对一个站点儿有主要三个操作,第一、登录;第二、操作;第三退出登录。
    操作是指登录站点儿,对页面进行分析处理,此处可能包括页重新加截或跳转再进行处理最让人头疼的就是这个假死了,用了委托,但是还是不太行呀!
      

  10.   

    登录成功后,第二步的操作跟winform有关吗,如果都是在网页操作的话,跟windows程序没有关联的话,那直接在.net里面实现所有的功能就可以了。我不懂你的假死是什么意思
      

  11.   

    百度和google都快翻遍了,唉,有线索指点下,谢谢~