Сделайте скриншот скрытого элемента управления

Все, что я хочу сделать, это иметь возможность сделать снимок экрана элемента управления (в данном случае webbrowser), когда форма скрыта-минимизирована или веб-браузер находится в фоновом режиме.

Я хочу использовать его как растровое изображение с помощью таймера, каждый раз, когда таймер тикает, я хочу получить растровое изображение этого элемента управления. Я могу это сделать, когда управление находится наверху.

Private Function Screenshot(x1 as integer,x2 as integer,y1 as integer,y2 as integer) As Bitmap
    Dim bounds As Rectangle
    Dim screenshot As System.Drawing.Bitmap
    Dim graph As Graphics
    bounds = Screen.PrimaryScreen.Bounds
    screenshot = New System.Drawing.Bitmap(x1 - x2, y1- y2, System.Drawing.Imaging.PixelFormat.Format32bppArgb)
    graph = Graphics.FromImage(screenshot)
    graph.CopyFromScreen(x1, y1, 0, 0, bounds.Size, CopyPixelOperation.SourceCopy)
    Return screenshot
End Function

person frtuc    schedule 22.08.2014    source источник
comment
Покажите код, который вы используете, чтобы получить этот снимок экрана, когда он сверху   -  person Matt Wilko    schedule 22.08.2014
comment
Имейте в виду, что браузеры часто вообще не утруждают себя рендерингом контента, когда они находятся в фоновом режиме, поэтому попытки захватить этот контент в любом случае могут оказаться напрасными усилиями.   -  person Psychemaster    schedule 22.08.2014
comment
есть метод Control.DrawToBitmap, но Windows не обновляет ничего, что пользователь не может видеть (например, когда что-то позади или свернуто).   -  person Ňɏssa Pøngjǣrdenlarp    schedule 22.08.2014
comment
Очевидно, я не могу поставить свой веб-браузер сверху, он должен быть сзади.   -  person frtuc    schedule 22.08.2014
comment
DrawToBitmap должен работать, даже если окно находится позади Z-последовательности.   -  person Cody Gray    schedule 22.08.2014
comment
спасибо за идею, но я не могу заставить работать control.drawtobitmap, даже если элемент управления находится сверху, он дает пустое растровое изображение, есть идеи, почему (я попробую, но кажется, что это не работает)?   -  person frtuc    schedule 22.08.2014
comment
DrawToBitmap() не работает для некоторых элементов управления на панели инструментов, которые имеют нестандартное поведение рендеринга. WebBrowser является одним из них. IHTMLElementRender::DrawToDC() также больше не работает из-за ускорения графического процессора и конкуренции с Chrome. Вы можете попробовать это только с помощью кода, который вы разместили, наличие окна браузера на переднем плане является жестким требованием.   -  person Hans Passant    schedule 22.08.2014
comment
А как насчет WM_PRINT? Я так и не нашел примеров.   -  person frtuc    schedule 22.08.2014