title: c# Code for capturing Full ScreenShot
body: <pre><code>using System;
  using System.Runtime.InteropServices;
  using System.Drawing;
  using System.Drawing.Imaging;
  
  namespace ScreenShotDemo
  {
  
      /// &lt;summary&gt;
      /// Provides functions to capture the entire screen, or a particular window, and save it to a file.
      /// &lt;/summary&gt;
      public class ScreenCapture
      {
  
          static void Main()
        {
  
           ScreenCapture sc = new ScreenCapture();
         // capture entire screen, and save it to a file
         Image img = sc.CaptureScreen();
         // display image in a Picture control named imageDisplay
         //this.imageDisplay.Image = img;
         img.Save("c:\\myBitmap.bmp");
         // capture this window, and save it
         sc.CaptureWindowToFile(Handle,"C:\\temp2.gif",ImageFormat.Gif);
         // ScreenCapture run = new ScreenCapture();  
         // run.CaptureScreen(); 
        }
  
          /// &lt;summary&gt;
          /// Creates an Image object containing a screen shot of the entire desktop
          /// &lt;/summary&gt;
          /// &lt;returns&gt;&lt;/returns&gt;
          public Image CaptureScreen() 
          {
              return CaptureWindow( User32.GetDesktopWindow() );
          }
  
          /// &lt;summary&gt;
          /// Creates an Image object containing a screen shot of a specific window
          /// &lt;/summary&gt;
          /// &lt;param name="handle"&gt;The handle to the window. (In windows forms, this is obtained by the Handle property)&lt;/param&gt;
          /// &lt;returns&gt;&lt;/returns&gt;
          public Image CaptureWindow(IntPtr handle)
          {
              // get te hDC of the target window
              IntPtr hdcSrc = User32.GetWindowDC(handle);
              // get the size
              User32.RECT windowRect = new User32.RECT();
              User32.GetWindowRect(handle,ref windowRect);
              int width = windowRect.right - windowRect.left;
              int height = windowRect.bottom - windowRect.top;
              // create a device context we can copy to
              IntPtr hdcDest = GDI32.CreateCompatibleDC(hdcSrc);
              // create a bitmap we can copy it to,
              // using GetDeviceCaps to get the width/height
              IntPtr hBitmap = GDI32.CreateCompatibleBitmap(hdcSrc,width,height); 
              // select the bitmap object
              IntPtr hOld = GDI32.SelectObject(hdcDest,hBitmap);
              // bitblt over
              GDI32.BitBlt(hdcDest,0,0,width,height,hdcSrc,0,0,GDI32.SRCCOPY);
              // restore selection
              GDI32.SelectObject(hdcDest,hOld);
              // clean up 
              GDI32.DeleteDC(hdcDest);
              User32.ReleaseDC(handle,hdcSrc);
  
              // get a .NET image object for it
              Image img = Image.FromHbitmap(hBitmap);
              // free up the Bitmap object
              GDI32.DeleteObject(hBitmap);
  
              return img;
          }
  
          /// &lt;summary&gt;
          /// Captures a screen shot of a specific window, and saves it to a file
          /// &lt;/summary&gt;
          /// &lt;param name="handle"&gt;&lt;/param&gt;
          /// &lt;param name="filename"&gt;&lt;/param&gt;
          /// &lt;param name="format"&gt;&lt;/param&gt;
          public void CaptureWindowToFile(IntPtr handle, string filename, ImageFormat format) 
          {
              Image img = CaptureWindow(handle);
              img.Save(filename,format);
          }
  
          /// &lt;summary&gt;
          /// Captures a screen shot of the entire desktop, and saves it to a file
          /// &lt;/summary&gt;
          /// &lt;param name="filename"&gt;&lt;/param&gt;
          /// &lt;param name="format"&gt;&lt;/param&gt;
          public void CaptureScreenToFile(string filename, ImageFormat format) 
          {
              Image img = CaptureScreen();
              img.Save(filename,format);
          }
  
          /// &lt;summary&gt;
          /// Helper class containing Gdi32 API functions
          /// &lt;/summary&gt;
          private class GDI32
          {
  
              public const int SRCCOPY = 0x00CC0020; // BitBlt dwRop parameter
  
              [DllImport("gdi32.dll")]
              public static extern bool BitBlt(IntPtr hObject,int nXDest,int nYDest,
                  int nWidth,int nHeight,IntPtr hObjectSource,
                  int nXSrc,int nYSrc,int dwRop);
              [DllImport("gdi32.dll")]
              public static extern IntPtr CreateCompatibleBitmap(IntPtr hDC,int nWidth, 
                  int nHeight);
              [DllImport("gdi32.dll")]
              public static extern IntPtr CreateCompatibleDC(IntPtr hDC);
              [DllImport("gdi32.dll")]
              public static extern bool DeleteDC(IntPtr hDC);
              [DllImport("gdi32.dll")]
              public static extern bool DeleteObject(IntPtr hObject);
              [DllImport("gdi32.dll")]
              public static extern IntPtr SelectObject(IntPtr hDC,IntPtr hObject);
          }
  
          /// &lt;summary&gt;
          /// Helper class containing User32 API functions
          /// &lt;/summary&gt;
          private class User32
          {
              [StructLayout(LayoutKind.Sequential)]
              public struct RECT
              {
                  public int left;
                  public int top;
                  public int right;
                  public int bottom;
              }
  
              [DllImport("user32.dll")]
              public static extern IntPtr GetDesktopWindow();
              [DllImport("user32.dll")]
              public static extern IntPtr GetWindowDC(IntPtr hWnd);
              [DllImport("user32.dll")]
              public static extern IntPtr ReleaseDC(IntPtr hWnd,IntPtr hDC);
              [DllImport("user32.dll")]
              public static extern IntPtr GetWindowRect(IntPtr hWnd,ref RECT rect);
  
          }
  
  
      }
  }
  </code></pre>
  
  <p>It's Giving Error "The Name Handle Does Not Exist In current Context", Please Help me Out.</p>
  
  <p>Thanks,
  Nishant</p>