博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
获得WebBrowser下载的图片
阅读量:7300 次
发布时间:2019-06-30

本文共 1988 字,大约阅读时间需要 6 分钟。

来源: 开心前辈的回答。

举一反三:注意execCommand的运用。

///
 
<summary>
   
///
 获取WebBrowser指定的图片   
///
 
</summary>
   
///
 
<param name="webBrowser">
需要获取图片的WebBrowser
</param>
   
///
 
<param name="imgID">
指定的图片的id(优先查找指定id)
</param>
   
///
 
<param name="imgSrc">
指定的图片的src,支持模糊查询
</param>
   
///
 
<param name="imgAlt">
指定的图片的src, 支持模糊查询
</param>
   
///
 
<returns></returns>
   
public
 
static
 Image GetRegCodePic(
ref
 WebBrowser webBrowser, String imgID, String imgSrc, String imgAlt)   
{   
       
    HTMLDocument doc 
=
 (HTMLDocument)webBrowser.Document.DomDocument;   
    HTMLBody body 
=
 (HTMLBody)doc.body;   
    IHTMLControlRange rang 
=
 (IHTMLControlRange)body.createControlRange();   
    IHTMLControlElement img;   
  
    
//
 如果没有图片的ID,通过Src或Alt中的关键字来取   
    
if
 (imgID.Length 
==
 
0
)   
    {   
        Int32 ImgNum 
=
 GetPicIndex(
ref
 webBrowser, 
ref
 imgSrc, 
ref
 imgAlt);   
  
        
if
 (ImgNum 
==
 
-
1
)   
            
return
 
null
;   
  
        img 
=
 (IHTMLControlElement)webBrowser.Document.Images[ImgNum].DomElement;   
    }   
    
else
  
        img 
=
 (IHTMLControlElement)webBrowser.Document.All[imgID].DomElement;   
  
    rang.add(img);   
    rang.
execCommand(
"
Copy
"
false
null
);   
    Image regImg 
=
 
Clipboard.GetImage(); 
  
    Clipboard.Clear();   
    
return
 regImg;   
}   
  
///
 
<summary>
   
///
 获取WebBrowser指定图片的索引   
///
 
</summary>
   
///
 
<param name="webBrowser">
指定的WebBrowser
</param>
   
///
 
<param name="imgSrc">
指定的图片src,支持模糊查询
</param>
   
///
 
<param name="imgAlt">
指定的图片alt,支持模糊查询
</param>
   
///
 
<returns></returns>
   
public
 
static
 Int32 GetPicIndex(
ref
 WebBrowser webBrowser, 
ref
 String imgSrc, 
ref
 String imgAlt)   
{   
    IHTMLImgElement img;   
  
    
//
 获取所有的Image元素   
    
for
 (Int32 i 
=
 
0
; i 
<
 webBrowser.Document.Images.Count; i
++
)   
    {   
        img 
=
 (IHTMLImgElement)webBrowser.Document.Images[i].DomElement;   
  
        
if
 (imgAlt.Length 
==
 
0
)   
        {   
            
if
 (img.src.IndexOf(imgSrc) 
>=
 
0
)   
                
return
 i;   
        }   
        
else
  
        {   
            
if
 (imgSrc.Length 
==
 
0
)   
            {   
                
//
 当imgSrc为空时,只匹配imgAlt   
                
if
 (img.alt.IndexOf(imgAlt) 
>=
 
0
)   
                    
return
 i;   
            }   
            
else
  
            {   
                
//
 当imgSrc不为空时,匹配imgAlt和imgSrc任意一个   
                
if
 (img.alt.IndexOf(imgAlt) 
>=
 
0
 
||
 img.src.IndexOf(imgSrc) 
>=
 
0
)   
                    
return
 i;   
            }   
        }   
    }   
    
return
 
-
1
;   
}

 

本文转自火地晋博客园博客,原文链接:http://www.cnblogs.com/yelaiju/archive/2010/10/03/1841521.html,如需转载请自行联系原作者

你可能感兴趣的文章
将博客搬至CSDN
查看>>
如何mac下安装virtual,并识别usb接口
查看>>
Ansible批量部署zabbix-agent
查看>>
使用PowerShell对比两个服务器系统进程和软件清单
查看>>
线程池的概述和使用学习笔记
查看>>
oracle基础之日志系列
查看>>
【NetApp】移动磁盘柜到一个新的控制器
查看>>
实在太伟大了,感谢楼主共享深度爬取和广度爬取
查看>>
crontab调用python时出现ImportError: No module named XXX的问题
查看>>
方正智睿NoSQL数据库总体介绍
查看>>
CentOS6.9安装Redis4.0.0
查看>>
Android 监听事件
查看>>
基于CentOS6.5环境之下的LNMP之编译安装mysql5.6.27
查看>>
《系统运维全面解析:技术、管理与实践》纠错汇总
查看>>
Object类对线程的支持----等待与唤醒
查看>>
硬盘串口和并口的区别
查看>>
java multithreading server example
查看>>
自动分发神器搭建kickstart
查看>>
我的友情链接
查看>>
mysql主从复制,半同步,主主复制架构的实现
查看>>