主题:如何取QQ网页登陆验证码,并显示在picturebox控件上。
cxj98
[专家分:40] 发布于 2009-06-22 15:21:00
如何取QQ网页登陆验证码,并显示在picturebox控件上。
请各位帮忙写个实例代码,急用。
或提供思路原理,比如如何获取图片的地址。
回复列表 (共18个回复)
沙发
天天学习 [专家分:4570] 发布于 2009-06-22 17:51:00
Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
Private Sub Command1_Click()
URLDownloadToFile 0, "http://ptlogin2.qq.com/getimage?aid=15000101&" & CStr(Rnd() * 100), ByVal "e:\1.jpg", 0, 0
Picture1.Picture = LoadPicture("e:\1.jpg")
'Kill "e:\1.jpg"
End Sub
不过,获得的图片与你实际登录时的图片不一致..
板凳
bcahzvip [专家分:6040] 发布于 2009-06-22 17:57:00
= =;
那下载来有啥用咧?
3 楼
天天学习 [专家分:4570] 发布于 2009-06-22 18:09:00
如果你已经通过像WebBrowser之类的控件访问QQ相关页面,在此页面上有验证码图片。如果你是想获得这个图片,可以这样.但你得知道图片标签的id等独一无二的特征。
引用Microsoft HTML Object Library
添加WebBrowser控件
Private Sub Command2_Click()
Dim doc As HTMLDocument
Dim body As HTMLBody
Dim range As IHTMLControlRange
Dim img As IHTMLControlElement
'webBrowser名为web1
Set doc = Web1.Document
Set body = doc.body
Set range = body.createControlRange 'web1必须是可见的
Set img = doc.images("imgVerify") '验证码图片的id为imgVerify
Clipboard.Clear
range.Add img
range.execCommand ("copy")
SavePicture Clipboard.GetData, "E:\a.jpg"
Picture1.Picture = LoadPicture("e:\a.jpg")
Set img = Nothing
Set range = Nothing
Set body = Nothing
Set doc = Nothing
End Sub
Private Sub Form_Load()
Web1.Navigate "http://super.qq.com/LoginQQ.jsp"
End Sub
4 楼
天天学习 [专家分:4570] 发布于 2009-06-22 18:16:00
综合了一下
Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
Dim href As String '验证码图片地址
Private Sub Command1_Click()
URLDownloadToFile 0, href, ByVal "e:\1.jpg", 0, 0
Image1.Picture = LoadPicture("e:\1.jpg")
'Kill "e:\1.jpg"
End Sub
Private Sub Command2_Click()
Dim doc As HTMLDocument
Dim body As HTMLBody
Dim range As IHTMLControlRange
Dim img As IHTMLControlElement
Dim img As IHTMLImgElement
'webBrowser名为web1
Set doc = Web1.Document
Set body = doc.body
Set range = body.createControlRange 'web1必须是可见的
Set img = doc.images("imgVerify") '验证码图片的id为imgVerify
Debug.Print img.href
href = img.href
Clipboard.Clear
range.Add img
range.execCommand ("copy")
SavePicture Clipboard.GetData, "E:\a.jpg"
Picture1.Picture = LoadPicture("e:\a.jpg")
Set img = Nothing
Set range = Nothing
Set body = Nothing
Set doc = Nothing
End Sub
Private Sub Form_Load()
Web1.Navigate "http://super.qq.com/LoginQQ.jsp"
End Sub
5 楼
cxj98 [专家分:40] 发布于 2009-06-22 22:09:00
[quote]综合了一下
Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
Dim href As String '验证码图片地址
Private Sub Command1_Click()
URLDownloadToFile 0, href, ByVal "e:\1.jpg", 0, 0
Image1.Picture = LoadPicture("e:\1.jpg")
'Kill "e:\1.jpg"
End Sub
Private Sub Command2_Click()
Dim doc As HTMLDocument
Dim body As HTMLBody
Dim range As IHTMLControlRange
Dim img As IHTMLControlElement
Dim img As IHTMLImgElement
'webBrowser名为web1
Set doc = Web1.Document
Set body = doc.body
Set range = body.createControlRange 'web1必须是可见的
Set img = doc.images("imgVerify") '验证码图片的id为imgVerify
Debug.Print img.href
href = img.href
Clipboard.Clear
range.Add img
range.execCommand ("copy")
SavePicture Clipboard.GetData, "E:\a.jpg"
Picture1.Picture = LoadPicture("e:\a.jpg")
Set img = Nothing
Set range = Nothing
Set body = Nothing
Set doc = Nothing
End Sub
Private Sub Form_Load()
Web1.Navigate "http://super.qq.com/LoginQQ.jsp"
End Sub
[/quote]
代码有些错误,希望再改改,最好能贴上工程文件。
6 楼
天天学习 [专家分:4570] 发布于 2009-06-22 22:37:00
[quote]代码有些错误,希望再改改,最好能贴上工程文件[/quote]
老师,偶错了,偶真的错了~~~~。。
谁爱改谁改去吧!!!真TMd操蛋....哈哈...
7 楼
merry05 [专家分:8920] 发布于 2009-06-22 23:00:00
LZ很欠骂,鉴定完毕
8 楼
mpx220wyb [专家分:0] 发布于 2009-06-24 13:11:00
是有很多错误啊,可能你们高手觉得不是问题,可是我们新手感到很困难。
1.添加WebBrowser控件 在 部件---》 "microsoft internet controls" 添加
很多功能是用各种控件来完成的,如果不作说明,很难找到相应控件
2.URLDownloadToFile 函数 我在vb6的API浏览器 的win32api.txt 里没找到,强行复制过来也不起作用
麻烦说一下出处。
谢谢了
9 楼
天天学习 [专家分:4570] 发布于 2009-06-24 14:21:00
[quote]是有很多错误啊,可能你们高手觉得不是问题,可是我们新手感到很困难。
1.添加WebBrowser控件 在 部件---》 "microsoft internet controls" 添加
很多功能是用各种控件来完成的,如果不作说明,很难找到相应控件
2.URLDownloadToFile 函数 我在vb6的API浏览器 的win32api.txt 里没找到,强行复制过来也不起作用
麻烦说一下出处。[/quote]
1、哦。原以为webBrowser控件不算是很特别的控件喃。。。
2.VB6的API浏览器里收集的的API函数不完整,建议使用FoxAPI Viewer。
10 楼
mpx220wyb [专家分:0] 发布于 2009-06-24 17:13:00
恩,感谢解答。已找到FoxAPI Viewer,不过它的函数说明和它的例子里的不太相同,不明白!
刚开始调试时,发生很多错误
Set doc = Web1.Document
Set body = doc.body
也会错!很奇怪,该引用的都已弄好了。中午关机休息了会,下午又好了,呵呵。
我来回复