Sunday, September 06, 2009

Capturing ScreenShots in C#

found this today here:

using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace KSeeSharp
class ScreenShot
static extern bool BitBlt(IntPtr hdcDest, int xDest, int yDest, int wDest, int hDest, IntPtr hdcSource, int xSrc, int ySrc, CopyPixelOperation rop);
static extern bool ReleaseDC(IntPtr hWnd, IntPtr hDc);
static extern IntPtr DeleteDC(IntPtr hDc);
static extern IntPtr DeleteObject(IntPtr hDc);
static extern IntPtr CreateCompatibleBitmap(IntPtr hdc, int nWidth, int nHeight);
static extern IntPtr CreateCompatibleDC(IntPtr hdc);
static extern IntPtr SelectObject(IntPtr hdc, IntPtr bmp);
public static extern IntPtr GetDesktopWindow();
public static extern IntPtr GetWindowDC(IntPtr ptr);

public void CaptureScreenShot(string filePath)
Size sz = Screen.PrimaryScreen.Bounds.Size;
IntPtr hDesk = GetDesktopWindow();
IntPtr hSrce = GetWindowDC(hDesk);
IntPtr hDest = CreateCompatibleDC(hSrce);
IntPtr hBmp = CreateCompatibleBitmap(hSrce, sz.Width, sz.Height);
IntPtr hOldBmp = SelectObject(hDest, hBmp);
bool b = BitBlt(hDest, 0, 0, sz.Width, sz.Height, hSrce, 0, 0, CopyPixelOperation.SourceCopy | CopyPixelOperation.CaptureBlt);
Bitmap bmp = Bitmap.FromHbitmap(hBmp);
SelectObject(hDest, hOldBmp);
ReleaseDC(hDesk, hSrce);

would be intersting to know how to capture in C# only the IE Browser content :-)

No comments:

Shared Cache - .Net Caching made easy

All information about Shared Cache is available here: Its free and easy to use, we provide all sources at codeplex.

Facebook Badge