Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>This may help you..</p> <pre><code>using System; using System.Runtime.InteropServices; using System.Drawing; using System.Drawing.Imaging; namespace Cluster2 { public class screen { public void Main() { CaptureScreenToFile("C:\\temp1.gif", ImageFormat.Gif); } /// &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 the 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 will take the screenshot of the entire window that you focus presently..Also, if you are using it as a seperate file like screen.cs then you should include the below function in your main cs file.</p> <pre><code>public class sshot : screen { public void shot() { CaptureScreenToFile("C:\\Logs\\Screenshot" + DateTime.Now.ToString("ddMMyyyy") + ".jpg", System.Drawing.Imaging.ImageFormat.Png); } } </code></pre> <p>Now call the function at the situation where you need to get screenshot..</p> <pre><code> sshot ob = new sshot(); ob.shot(); </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload