Re: Screen capture control using WebBrowser control and GDI+ in a web app

Tech-Archive recommends: Repair Windows Errors & Optimize Windows Performance



Uhm I'm surprised you're even getting that far. I suspect the Web Browser requires a hosting container to work with a window. I don't think it will render unless there's a Windows event loop to refresh the display area... You can check and see if that's the issue by creating a form and then from within ASP.NET fire that form with a full Application.Run event loop. That *might* work better, but even then this might not work. Remember ASP.NET runs as a service in a system context not on the desktop.

ASP.NET is not really a good way to do this.Aside from the security issues, this seems like a task for a WinForm application...

+++ Rick ---

--
Rick Strahl
West Wind Technologies
www.west-wind.com/weblog



"JP2006" <james.peer@xxxxxxxxx> wrote in message news:1168196694.050318.126160@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
I'm trying to write a control that will take a screen capture of a
particular website when a user submits a form in a web application; one
of the form fields is for a URL - the control needs to get an image of
that web site so that it can be displayed later as a thumbnail image.

I have code for taking a normal screen capture using GDI+ which works
fine. What I am now trying to do is to modify it so the screen capture
is of a remote website rather than of my PC. To attempt to do this I am
using the .NET WebBrowser control to load the website URL into.

The main bit of code is:


// The method that is called from the ASPX page when the form is
submitted
public static void newxcap2()
{
WebBrowser m_browser = new WebBrowser();
m_browser.Visible = false;
m_browser.DocumentCompleted += new
WebBrowserDocumentCompletedEventHandler(GetScreenCapture);
m_browser.Navigate(m_browser.Url = new
Uri("http://www.bbc.co.uk
}

public static void GetScreenCapture(object sender,
WebBrowserDocumentCompletedEventArgs e)
{
Graphics _g = ((WebBrowser)sender).CreateGraphics();
System.IntPtr desktopDC = GetDC(System.IntPtr.Zero);
Image bm = new Bitmap(300, 300, _g);
Graphics g = Graphics.FromImage(bm);
System.IntPtr bmDC = g.GetHdc();
BitBlt(bmDC, 0, 0, bm.Width,bm.Height, desktopDC, 0, 0,
0x00CC0020 /*SRCCOPY*/);
ReleaseDC(System.IntPtr.Zero, desktopDC);
g.ReleaseHdc(bmDC);
g.Dispose();
bm.Save(@"C:\Documents and
Settings\JP\Desktop\xCapImage.bmp");
}

Having tinkered around with it quite a bit the most I can make it do is
to generate a blank image, other attempts have resulted in various
errors.

Am I on the right track in general here with the use of the WebBrowser
control (to in effect load a webpage behind the scenes) or am I
approaching this in the wrong way?
Thanks

James


.



Relevant Pages

  • Re: Image not from image or picture component?
    ... by the phrase, "webbrowser components page". ... its Enterprise Edition controls and I can't see a WebBrowser control. ... Can I add it from Project / Components Dag? ... I haven't tried finding the window handle with the findwindow APIs, ...
    (comp.lang.basic.visual.misc)
  • Caret problems with IE7
    ... We are creating an e-mail program, using WebBrowser to display HTML e-mails. ... another recipient edit control and back, the caret reappears. ... The window that these controls are contained in is a CFormView. ...
    (microsoft.public.inetsdk.programming.webbrowser_ctl)
  • RE: is it possible to control one app from another?
    ... I have a website. ... I have an activex script called ... If the window you wish to control is another browser that you ...
    (Security-Basics)
  • Screen capture control using WebBrowser control and GDI+ in a web app
    ... I'm trying to write a control that will take a screen capture of a ... I have code for taking a normal screen capture using GDI+ which works ... is of a remote website rather than of my PC. ... using the .NET WebBrowser control to load the website URL into. ...
    (microsoft.public.dotnet.framework.aspnet)
  • Re: Tabbing Between and Inside WebBrowser Ctrl and other Controls
    ... > I have made a dll which hosts all the functions related to WebBrowser ... > This allows me to create a webbrowser ctrl in a window and also ... > allows me to use the Tab key inside the webbrowser control. ...
    (microsoft.public.inetsdk.programming.webbrowser_ctl)