各位乡亲父老,欢迎大家来捧场!江湖卖艺,生活不易!技艺交流(投稿、打广告、链接交换),请搓这里

  VB获取图片验证码

2019/11/8 17:49:07管理员 2282
- N +
Public Function GetCheckCode()

        Dim xmlHttp As Object
        Dim Pic
        Dim PicData As Object

        Set xmlHttp = CreateObject("Microsoft.XMLHTTP")
        Set PicData = CreateObject("Adodb.Stream")
        xmlHttp.open "get", "http://www.pceggs.com/CheckCode.aspx", True
        xmlHttp.setRequestHeader "Accept", "*/*"
        xmlHttp.setRequestHeader "Referer", "http://www.pceggs.com/Login.aspx"
        xmlHttp.setRequestHeader "Accept-Language", "zh-cn"
        xmlHttp.setRequestHeader "Accept-Encoding", "gzip, deflate"
        xmlHttp.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 2.0.50727)"
        xmlHttp.setRequestHeader "Host", "www.pceggs.com"
        xmlHttp.setRequestHeader "Connection", "Keep-Alive"
        xmlHttp.send
        While xmlHttp.ReadyState <> 4
                DoEvents
        Wend
        Pic = xmlHttp.responseBody
        With PicData
                .Type = 1
                .open
                .write Pic
                .SaveToFile App.Path & "\CheckCode.jpg", 2
                .Cancel
                .Close
        End With
        Set PicData = Nothing
        Set xmlHttp = Nothing
        frmLogin.ImgYZM.Picture = LoadPicture(App.Path & "\CheckCode.jpg")
End Function





我在VB6.0中通过WebBrowser控件通过以下代码获取图片:
'没有frame的情况
Private Sub GetImg()
Dim doc As HTMLDocument
Dim body As HTMLBody
Dim range As IHTMLControlRange
Dim img As IHTMLControlElement

Set doc = WebBrowser1.Document
Set body = doc.body

Set range = body.createControlRange
Set img = doc.images("checkcodeimg")

Clipboard.Clear
range.Add img
range.execCommand ("copy")
Picture1.Picture = Clipboard.GetData
Set img = Nothing
Set range = Nothing
Set body = Nothing
Set doc = Nothing
End Sub
如果图片没有包含在frame中,通过上面的函数可以成功获取到图片;

如果图片包含在frame中,通过下面的函数:
Private Sub GetImageFromWeb2()

Dim doc As Object
Set doc = WebBrowser1.Document
Dim body As HTMLBody
Set body = doc.body
Dim img As IHTMLControlElement
Set img = WebBrowser1.Document.frames("checkcodeframe").Document.images("checkcodeimg")
Dim range As Object
Set range = WebBrowser1.Document.body.createControlRange()

range.Add img
range.execCommand "Copy", False, Null
Set img = Nothing
Set range = Nothing
Me.Picture3.Picture = Clipboard.GetData()
Clipboard.Clear
End Sub
在该函数执行到range.Add img时出现错误“参数无效”,参看两个函数中的img变量都是一样的,类型也相同,而且都有有效值,不知道是什么原因,麻烦解答一下,谢谢!
网页示例:
//index.htm
Example
//CheckCode.htm
0人赞 分享 二维码 赏一个
选择分享方式
移步手机端
文章手机二维码

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
选择打赏方式
微信赞助

打赏