[DllImport("User32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool PrintWindow(IntPtr hwnd, IntPtr hDC, uint nFlags);
<DllImport("User32.dll", SetLastError:=True)> _
Private Shared Function PrintWindow(hwnd As IntPtr, hDC As IntPtr, nFlags As UInteger) As Boolean
End Function
None.
This function is only available on Windows XP or higher. Windows 2000/9x/ME do not support it.
To capture only the client area of window, use PW_CLIENTONLY = 0x1 as nFlags
Screenshotting a form to a Bitmap in C#:
Graphics g = form.CreateGraphics();
Bitmap bmp = new Bitmap(form.Size.Width, form.Size.Height, g);
Graphics memoryGraphics = Graphics.FromImage(bmp);
IntPtr dc = memoryGraphics.GetHdc();
bool success = PrintWindow(form.Handle, dc, 0);
memoryGraphics.ReleaseHdc(dc);
// bmp now contains the screenshot
Me.AutoRedraw = True
PrintWindow Me.hWnd, Me.hDC, 0
Control.DrawToBitmap()
Or call Control.InvokePaintBackground() followed by Control.InvokePaint().