例如这个网页中的验证码
我想利用VB让他直接显示在Form窗体的picture上。请问该怎么办?
高手来。谢谢
例如这个网页中的验证码
我想利用VB让他直接显示在Form窗体的picture上。请问该怎么办?
高手来。谢谢
简单写了下代码,注释也很详细 - -|
新建个窗体,放一个图片框,默认名字 Picture1
把代码复制进去
运行
点击图片框,你会看到奇妙的事情发生
Option Explicit
Private Sub Picture1_Click()
Dim http As Object
'建立xmlhttp对象
Set http = CreateObject("MSXML2.XMLHTTP")
'设置验证码网址
http.open "GET", " http://ptlogin2.qq.com/getimage?aid=8000203&" & Rnd, False
http.send
'判断http状态
If http.readyState = 4 Then
Dim a() As Byte, b, i As Long
'这里把返回的数据放到临时变量b
b = http.responseBody
'将返回的数据写入到byte数组a
ReDim a(UBound(b))
For i = 0 To UBound(a)
a(i) = b(i)
Next
'确保临时文件为空
Open App.Path & "\code.jpg" For Output As #1
Close #1
'向临时文件写入图片数据
Open App.Path & "\code.jpg" For Binary As #1
Put #1, , a
Close #1
'将图片加载到图片框
Picture1.Picture = LoadPicture(App.Path & "\code.jpg")
'删除临时文件
Kill App.Path & "\code.jpg"
Else
Picture1.Cls
Picture1.Print "http请求错误!" & http.readyState
End If
End Sub
你这个网址打开是个空白页。
验证码图片体现在网页的html代码里和其他图片差不多,也是<img src=...... /img>,所不同的是一般图片的URL确实是指向某一图片文件的地址,而验证码图片则指向一个程序文件并带有参数。
因此,你只能针对某一网站来编写,无法做到一个程序针对所有的网站的。
首先,你必须模仿浏览器的行为,发起http请求把登陆页的html下载下来,解释出其中关于验证码图片的src后面的URL,然后你再用这个URL再次发起一次http请求,那么你就会得到这个图片的二进制数据了,这些数据可能是jpg格式,也可能是其他格式(具体看那个网站用的是什么验证控件),反正数据得到之后你就可以试试往picture上贴了。