获得WebBrowser下载的图片

来源:http://social.microsoft.com/Forums/it-IT/visualcshartzhchs/thread/dca7c1fa-cfe7-4719-888c-5c4b26ee8920 开心前辈的回答。

举一反三:注意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 ;   
}

 

 

你可能感兴趣的:(WebBrowser)