如何保存在webbrowser中的GIF验证码图片(100)

  • 主题发起人 主题发起人 huoxu0529
  • 开始时间 开始时间
H

huoxu0529

Unregistered / Unconfirmed
GUEST, unregistred user!
比如DISCUZ的验证码图片,直接获取得不到图片,保存只能保存到图片的第一帧,在网上找了很多,都是只能保存第一帧,网址http://www.discuz.net/register.php,还请各位赐教,如分不够,可再加
 
delphibbs 里面特别多这样的代码,呵呵我自己都发了一些(随便捡一段) D:=webbrowser1.Document as IHTMLDocument2; e:=d.body as IHTMLElement; e2:=e as IHTMLElement2; cp:=e2.createControlRange as IHTMLControlRange; d2:=webbrowser1.Document as IHTMLDocument2; //下面是破解验证码 coll := d.all; coll := (coll.tags('img') as IHTMLElementCollection); for i := 0 to coll.Length - 1 do begin // 循环取出每个url elem := (coll.item(i, 0) as IHTMLElement); url := Trim(string(elem.getAttribute(WideString('src'), 0))); //Text := Trim(string(elem.outertext)); if pos('CodeNubImg', url) >0 then // getCheckImg CodeNubImg bbb_dnzb begin Break; end; //DebugInfo(text+#13#10+url) ; Application.ProcessMessages; end; img:=elem as IHTMLImgElement; ce:=img as IHTMLControlElement; cp.add(ce); try Clipboard.Open; Clipboard.Clear; if Clipboard.hasFormat(CF_BITMAP) then showmessage('CF_BITMAP'); if Clipboard.hasFormat(CF_TEXT) then showmessage('CF_TEXT'); if Clipboard.hasFormat(CF_METAFILEPICT) then showmessage('CF_METAFILEPICT'); if Clipboard.hasFormat(CF_PICTURE) then showmessage('CF_PICTURE'); if Clipboard.hasFormat(CF_COMPONENT) then showmessage('CF_COMPONENT'); try cp.execCommand('Copy',false,0); MyHandle := Clipboard.GetAsHandle(cf_Bitmap); //cf_Bitmap CF_DIB CF_METAFILEPICT bmpPtr := GlobalLock(MyHandle); // image1.Picture.LoadFromClipboardFormat(cf_BitMap,ClipBoard.GetAsHandle(cf_Bitmap),0); image1.Picture.Bitmap.Assign(Clipboard); image1.Picture.LoadFromClipboardFormat(cf_BitMap,MyHandle,0); //CF_DIB cf_BitMap CF_METAFILEPICT Clipboard.Clear; GlobalUnlock(MyHandle); finally Clipboard.Close; end; // end; bmp:=(image1.Picture.Bitmap as TBitmap) ; //checkstr:=getCheckStr(bmp); except if clipboard.HasFormat(CF_BITMAP) then image1.Picture.LoadFromClipboardFormat(cf_BitMap,ClipBoard.GetAsHandle(cf_Bitmap),0); end;end;
 
这样好像不可以吧?我试过,只能得到第一帧
 
我只给你一个思路,我以前是这么做的:既然你WebBrowser浏览了这个图片,那么图片都会在IE Cache里面存储的,所以可这么存:先把你图片的互联网上绝对URL转换成对本地URL,有了本地URL,那么就可以用普通的Windows.CopyFile函数做拷贝了,此方法只适用于IE。
 
在IE缓存里面没有这个图片,我也试过了,得不到的,不知道为什么
 
除了这两个方法,还有别的方法吗?在IE里面直接用右键保存也只能保存第一帧,但如果用opera之类的浏览器就可以保存完整的GIF.
 
这个图片,用手拷都拷不下来,迅雷也下不了,太强了帮你顶,关注这个问题...
 
谢谢帮顶,这个图片就是有点麻烦,在IE里面手动保存也只能保存到图片的第一帧,呵呵,我也试过用迅雷下的,不行的,感觉以我的水平能想的办法都试过了,在网上能搜到的办法也试过了就是得不到完整的gif,delphibbs高人如潮,应该有高人可以搞定这个问题吧
 
我通过IRIS 可以监控到这个GIF的数据流它是通过hook recv函数获得的数据流,如果你也用这种方法,相信肯定可以的,呵呵就是难度大了点我想一种方法,或者想法应当可以,但是不知道怎样实现用webbrowser访问时,图片的数据流在本进程里,如果在本进程中查找到这个数据流呢?就可以保存到本地了希望高手高手高高手来关注一下,呵呵
 
你试试用IE把网页另存为,选“全部”,然后打开那个目录看里面有没有你的gif?[:D]
 
多谢枝上柳绵,也许这个问题真的需要高手高手高高手才能解决?回北京男人:试过,里面没有验证码的图片
 
看来找不到了,结贴吧,谢谢两位
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
875
DelphiTeacher的专栏
D
后退
顶部