大家好:现在IE中有一个ACTIVEX控件,该控件需要输入用户名与密码,我想通过程序自动输入,我尝试过一些方面,如HOOK但好像取不到,不知大家有什么高招,请指教,,谢谢...

解决方案 »

  1.   

    你是需要做一个软件, 这个软件可以在IE的ActiveX控件中自动输入用户名密码?
      

  2.   

    还是用hook,但是在ie下方式有些变化,就象在ie下看密码一下。
      

  3.   

    才30分啊,这种问题应该值100的,但30分照杀你
    首先,你要获得当前IE窗口的WebBrowser,也就是IHTMLDocument2,获得了IHTMLDocument2想做什么都就行了
    下面给你一个使用WebBrowser控件的例子,别说WebBrowser不合适你,WebBrowser不是关键,关键的是IHTMLDocument2        private void Form1_Load(object sender, EventArgs e)
            {
                webBrowser1.Navigate("www.sina.com.cn");
            }        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
            {
                IHTMLDocument2 doc = webBrowser1.Document.DomDocument as IHTMLDocument2;
                IHTMLWindow2 windows2 = doc.parentWindow;
                windows2.execScript("javascript:document.getElementById('username').value ='bb';document.getElementById('password').value='aa';", "JavaScript");
            }
      

  4.   

    7楼的代码是在知道用户名和密码框的ID的情况下使用的,如果不知道ID,可以使用遍历的方法,但还是要做一些判断的        private void Form1_Load(object sender, EventArgs e)
            {
                webBrowser1.Navigate("www.sina.com.cn");
            }        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
            {
                //这里如何判断全部下载完毕呢??            // 获取IHTMLDocument2
                IHTMLDocument2 doc = webBrowser1.Document.DomDocument as IHTMLDocument2;            //获取文档中所有的表单
                foreach (HTMLFormElement form in doc.forms)
                {
                    //获取当前表单有的输入框
                    foreach (HTMLInputTextElement element in form.getElementsByTagName("input"))
                    {
                        //判断是不是text,可以认为除去密码后所有的输入框
                        if (element.type.ToLower() == "text")
                        {
                            element.value = "aa";
                        }
                        else if (element.type.ToLower() == "password") //判断是不是密码框
                        {
                            element.value = "bb";
                        }
                    }
                }
            }
      

  5.   

    谢谢大家的支持:ZengHD:你这个方法应该是用于一般网页的时候很有用,但我现在的问题是:WEB端是加载的一个已经写好的一个Activex控件,里面没有任何属性可以遍历到,所以用你那种方法得不到....看不是可以通过其他方法定位到用户名和密码输入框中.....谢谢.....还等两天我会结贴的...谢谢大家...
      

  6.   


    哦,我看错题目了,原来你不是使用ActiveX去自动填写用户和密码,那是要自动填写ActiveX中的用户名和密码框,就像支付宝、淘宝的网页。
    值得研究
      

  7.   

    EN..是的..谢谢...呵呵.....我问过身边的一些朋友,他们说可以用HOOK来钩,但我试了好像钩不到,不知朋友们有什么其他的好法子没.....谢谢大家了....
      

  8.   


    看来是这一个需求是吧?如果你愿意的的话, 你可以把这个网页地址告诉我, 我来尝试一下, 应该可以搞定.Hook和这个自动输入没有任何关联.
      

  9.   


    HOOK不一定能成功,因为一些重要的ActiveX可能使用了NP技术,你可以看看支付宝的登陆页面,连复制粘贴都屏蔽了,可能还屏蔽了其他的API函数
      

  10.   

    帮看看下面这个网址的登陆框是否屏蔽了keybd_event\SendInput\SendMessage等函数
    http://www.alipay.com/
      

  11.   

    哈哈..请shrinerain将你的好方法,贴出来..大家分享一下....谢谢....
      

  12.   

    我不确定一定能够做到, 取决于你的ActiveX的设计.我采用的技术为Microsoft Active Accessibilitygoogle即可.