zoukankan      html  css  js  c++  java
  • 获取WebBrowser中的指定图片

            /// <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;
            }

  • 相关阅读:
    实用Javascript调试技巧
    fetch的常见问题及其解决办法
    为什么重复的GET请求变慢了?
    JavaScript深入浅出第4课:V8引擎是如何工作的?
    一步一步搭建前端监控系统:如何定位前端线上问题?
    如何使用 Set 来提高JS代码的性能
    详解Vue的slot新用法
    详解Vue响应式原理
    BeautyWe.js 一套专注于微信小程序的开发范式
    await Task.Yield()和await Task.CompletedTask有什么不同
  • 原文地址:https://www.cnblogs.com/linmilove/p/1591661.html
Copyright © 2011-2022 走看看