private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    HtmlDocument doc = webBrowser1.Document;
    HtmlDocument docbk = doc;

    //为了获取webbrowser中的图片,要引用mshtml 组件
    IHTMLDocument2 doc2 = (IHTMLDocument2)docbk.DomDocument;
    IHTMLControlRange imgRange;
    HTMLBody body = (HTMLBody)doc2.body;

    string idencode = “”;
    foreach (IHTMLImgElement img in doc2.images)
    {
        if (img.src.IndexOf(“randomimage”) > 0)
        {
            imgRange = (IHTMLControlRange)body.createControlRange();
            imgRange.add((IHTMLControlElement)img);
            imgRange.execCommand(“Copy”, false, null);
            Bitmap bmp = (Bitmap)Clipboard.GetDataObject().GetData(DataFormats.Bitmap); //内存拷贝法
            pictureBox1.Image = bmp;
            bmp = MemDeal(bmp); //灰度处理
            pictureBox3.Image = bmp;
            bmp = BinDeal(bmp); //二值化
            pictureBox4.Image = bmp;
            textBox1.Text = idencode = GetNumbers(bmp); //数字提取
        }
    }

    //模拟输入
    foreach (HtmlElement he in doc.All)
    {
        if(he.TagName.ToUpper().Equals(“INPUT”))//表单
        {
            switch (he.Name)
            {
                case “name”:
                    doc.All[he.Id].InnerText = “winxos”;
                    break;
                case “pass”:
                    doc.All[he.Id].InnerText = “******”;
                    break;
                case “psNum”:
                    doc.All[he.Id].InnerText = idencode;
                    break;
            }
        }
        if (he.GetAttribute(“value”).Equals(“登录”))
        {
            //he.InvokeMember(“click”);
            //不知道为什么按钮点击无法触发
            MessageBox.Show(“submit”);
        }
    }
}

3 对 “c#实现webbrowser模拟登录”的想法;

评论被关闭。