zoukankan      html  css  js  c++  java
  • 获得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"falsenull);   
        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://yelaiju.cnblogs.com
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    hihoCoder week20 线段树的区间修改
    hihoCoder week19 RMQ问题再临-线段树 单点更新 区间查询
    hihoCoder week17 最近公共祖先·三 lca st表
    hihoCoder week16 RMQ-ST算法
    hihoCoder week15 最近公共祖先·二
    eclipse 分屏显示同一文件
    eclipse 每次以debug方式启动springboot之后都会在SilentExitExceptionHandler类中的throw new SilentExitException()处断开,但是我明明没有下断点啊
    eclipse alt+/智能提示错误问题
    SpringBoot 之 普通类获取Spring容器中的bean
    kafka常用命令
  • 原文地址:https://www.cnblogs.com/yelaiju/p/1841521.html
Copyright © 2011-2022 走看看