Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在屏幕c上未显示webcontrol的情况下捕获HTMLelement的视频_C#_Html_Video_Iframe_Webbrowser Control - Fatal编程技术网

C# 在屏幕c上未显示webcontrol的情况下捕获HTMLelement的视频

C# 在屏幕c上未显示webcontrol的情况下捕获HTMLelement的视频,c#,html,video,iframe,webbrowser-control,C#,Html,Video,Iframe,Webbrowser Control,我正在尝试将一个获得url的应用程序变白,并找出所有html5画布广告。我发现iframes是我能得到的最好的HTMLElement,并拍摄该元素的视频截图 我必须呈现页面,因为它使用javascript调用使用内存中的webbrowser控件创建最终页面,然后在示例中找到webbrowser控件objDoc文档中的所有iframe。 var aColl=来自objDoc.Body.All中的HtmlElement p 其中Configuration.lstCanvas.Containsp.Ta

我正在尝试将一个获得url的应用程序变白,并找出所有html5画布广告。我发现iframes是我能得到的最好的HTMLElement,并拍摄该元素的视频截图

我必须呈现页面,因为它使用javascript调用使用内存中的webbrowser控件创建最终页面,然后在示例中找到webbrowser控件objDoc文档中的所有iframe。 var aColl=来自objDoc.Body.All中的HtmlElement p 其中Configuration.lstCanvas.Containsp.TagName.ToUpper 选择p;

对于每个元素,我必须捕获iframe内容的屏幕截图和视频,甚至是一个html文件,稍后可以表示视频

为了捕获图像,如果我将null传递给HtmleElement,我将使用以下代码获取全屏捕获,作为webbrowser控件的扩展方法

public static Image GetElementImage(this WebBrowser web, HtmlElement elm = null)
    {
        try
        {
            IHTMLDocument2 idoc2 = web.Document.DomDocument as IHTMLDocument2;

            if (idoc2 == null)
            {
                return null;
            }

            IHTMLElementCollection elementCollection = idoc2.all;

            if (elementCollection == null)
            {
                return null;
            }

            IHTMLElementRender iHTMLElementRender;

            if (elm != null)
            {
                iHTMLElementRender = (IHTMLElementRender)elm.DomElement;
                if (iHTMLElementRender == null)
                {
                    return null; 
                }
            }
            else {
                iHTMLElementRender = idoc2.body as IHTMLElementRender;
                if (iHTMLElementRender == null)
                {
                    return null;
                }
            }
            // get the location and size of the element and create a bitmap
            // need a different interface

            IHTMLElement element = iHTMLElementRender as IHTMLElement;

            if (element == null)
            {
                return null;
            }

            int elementWidth = element.offsetWidth;
            int elementHeight = element.offsetHeight;

            // Create a bitmap and render the element to it.

            Bitmap memoryBitmap = new Bitmap(elementWidth, elementHeight, PixelFormat.Format24bppRgb);
            Graphics memGraphics = Graphics.FromImage(memoryBitmap);

            IntPtr memDC = memGraphics.GetHdc();

            iHTMLElementRender.DrawToDC(memDC);
            memGraphics.ReleaseHdc(memDC);

            Image r = (Image)memoryBitmap.Clone();
            memGraphics.Dispose();
            memoryBitmap.Dispose();
            return r;
        }
        catch // (Exception ex)
        {

            return null;
        }
    }
我还没有找到一种方法来拍摄这个元素的视频。 我试图将iframe的内容抓取为html,以便保存并用于后者,但我发现了一些问题:

url并不总是iframe的一个属性,它会从javascript中更改 跨域脚本不允许我对html进行编程 我下载的文件并不总是复制iframe的内容 你对获取html代码或视频有什么建议吗

提前谢谢