Re: Screen capture control using WebBrowser control and GDI+ in a web app
- From: "Rick Strahl [MVP]" <rickstrahl@xxxxxxxxxxx>
- Date: Sun, 7 Jan 2007 09:51:43 -1000
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
.
- References:
- Prev by Date: Re: HTML Decoding
- Next by Date: Re: Getting Identity from SP
- Previous by thread: Screen capture control using WebBrowser control and GDI+ in a web app
- Next by thread: Getting Identity from SP
- Index(es):
Relevant Pages
|