amgloon 发表于 2008-12-12 14:42:09

如何在GUI上显示验证码?

如何把类如百度注册页面的验证码在GUI上显示出来。那位高人指点一下,不是图片类型的!

https://passport.baidu.com/?reg&tpl=mn

[ 本帖最后由 amgloon 于 2008-12-15 12:46 编辑 ]

范统.贾 发表于 2008-12-12 15:17:36

http://www.autoitx.com/forum.php?mod=viewthread&tid=1237&highlight=%D1%E9%D6%A4%C2%EB

[ 本帖最后由 范统.贾 于 2008-12-12 15:30 编辑 ]

amgloon 发表于 2008-12-12 15:18:23

这个不行的。我试过了。。

liongodmien 发表于 2008-12-12 16:29:12

有些网页的图片采用的是非正常的方式显示,那要下载那个链接的数据(即图片)然后再显示,较麻烦啊...

amgloon 发表于 2008-12-12 16:46:01

是啊。百度就是那个网页连接,有人说用DHTML.可以弄..但是我不懂....= =

78391493 发表于 2008-12-12 18:59:32

回复 4# liongodmien 的帖子

不是“非正常”,这个是PHP调用GD输出的图片

amgloon 发表于 2008-12-12 19:25:52

那有办法实现在GUI上显示么?

rho123 发表于 2008-12-12 20:16:53

直接把图片下载下来就可以,保存为BMP图片。:face (14):然后显示在GUI 窗口
而却当下载这个验证码后,相当于在网页中刷新了下验证码,这个下载下来的验证码和网页中需要输入的验证码是同步的

amgloon 发表于 2008-12-13 09:04:40

如果可以用图片另存为把验证码保存为BMP图片。那样是可以跟页面同步的....不等于是刷新.
有命令实现么?

liongodmien 发表于 2008-12-13 21:22:52

下载了之后就算你不刷新页面,页面要求输入的验证码也应该是你下载后显示在GUI上的,你把GUI上输入的字符输入到网页上,然后再提交就可以了

amgloon 发表于 2008-12-14 10:12:39

不对的....如果是用连接下再图片的话.那个验证码是跟页面所显示的验证码是不一样的....但是他提交的时候是按你所打开的页面上的验证码来确认的

auto 发表于 2008-12-14 18:13:13

测试了一下。。验证码直接取最后一次下载或显示就可以了
https://passport.baidu.com/?verifypic 直接下载显示就可以了,不理管和注册页面的不一样,
也应当不是才对。

amgloon 发表于 2008-12-15 09:15:33

恩.在百度上是可以实现的...它的验证码是跟那个同步的。

如果有的网站不同步的话.有什么办法不?

xayle 发表于 2008-12-15 11:55:50

#include <IE.au3>
#include <GUIConstants.au3>
#include <ClipBoard.au3>
#include <GDIPlus.au3>
#include <Winapi.au3>
$OpenPage = _IECreate("https://passport.baidu.com/?reg")
$iVerifyPic = _IEImgGetCollection($OpenPage, 2)
_GDIPlus_Startup()
$iVerifyPics = $OpenPage.Document.body.createControlRange()
$iVerifyPics.add($iVerifyPic)
$iVerifyPics.Select ()
$iVerifyPics.execCommand('Copy')
Sleep(500)
_ClipBoard_Open(0)
$iVerifyPics = _ClipBoard_GetDataEx($CF_BITMAP)
$iVerifyPics = _GDIPlus_BitmapCreateFromHBITMAP($iVerifyPics)
_ClipBoard_Close()
FileDelete(@TempDir & "\VerifyPic.bmp")
_GDIPlus_ImageSaveToFile($iVerifyPics, @TempDir & "\VerifyPic.bmp")
GUICreate("VerifyPic", 150, 150, -1, -1, -1)
GUISetBkColor(0xFFFFFF)
GUISetState()
$Img = GUICtrlCreatePic(@TempDir & "\VerifyPic.bmp", 10, 20, _GDIPlus_ImageGetWidth($iVerifyPics), _GDIPlus_ImageGetHeight($iVerifyPics))
_GDIPlus_BitmapDispose($iVerifyPics)
_GDIPlus_Shutdown()
While 1
        $msg = GUIGetMsg()
        If $msg = $GUI_EVENT_CLOSE Then
                GUIDelete()
                ExitLoop
        EndIf
WEnd

78391493 发表于 2008-12-15 12:44:41

验证码被保存在session中,只要你不重复打开那个页面,验证码是不会过期的
页: [1] 2
查看完整版本: 如何在GUI上显示验证码?