|
发表于 2008-10-13 21:12:58
|
显示全部楼层
转贴一篇文章,不知大家觉得这个方法如何.
动态验证码图片的获取(显示) by gooker 2007年10月08日 星期一 上午 11:11
有一些验证码直接显示不出来,但保存到剪切板里面了,只能保存到文件然后显示,配合au3的udf可以实现.
这里只是将图片显示在GUI上,只是显示,要得到真正的验证码难...
因为一般的验证码都是动态生成的,没办法直接保存图片然后显示图片,
这里实现了将页面显示的图片直接显示到GUI上,其他图片也是可以的.
;首先要得到网页里面某一个验证码图片/普通图片的对象
$oIE = _IECreate ("http://www.lxkj.cn/web/syvote_2/sydw_vote.asp")
$oImg = _IEImgGetCollection ($oIE, 13)
;下面是将图片复制到剪切板里面,下面部分属于DHTML,vb也是适合
$oPic = $oIE.Document.body.createControlRange()
$oPic.Add($oImg)
$oPic.execCommand("Copy")
;这里读出来的是图片在临时文件夹里面的地址
$bmp = ClipGet()
得到地址后就可以通过 GUICtrlCreatePic等函数显示出来,很简单不再赘述.
;;;;;;;;;;;;;;;;;;;;;;;下面是原来发在论坛的例子;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
一个小例子,在GUI里面显示网页内的图片,原本只是显示动态验证码图片的,不过对大多数图片都适合.
主要部分描述可以看这里
#include <IE.au3>
#include <GUIConstants.au3>
Dim $height,$width,$i=0
$oIE = _IECreate ("http://www.autoitx.com/index.php")
$oImgs = _IEImgGetCollection ($oIE)
MsgBox(0,"","这个页面有这么多PP: "&@extended&"个")
For $oImg In $oImgs
$i+=1
$height = $oImg.height
$width = $oImg.width
$oPic = $oIE.Document.body.createControlRange()
$oPic.Add($oImg)
$oPic.execCommand("Copy")
$img = ClipGet()
If $width<150 Then
GUICreate("第"&$i&"图片",150,$height,-1,-1,-1)
Else
GUICreate("第"&$i&"图片",$width,$height,-1,-1,-1)
EndIf
GUISetBkColor (0xFFFFFF)
GUISetState ()
$n=GUICtrlCreatePic($img,0,0,$width,$height)
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then
GUIDelete()
ExitLoop
EndIf
Wend
Next |
|