using System.Runtime.InteropServices; …… internal class NativeCalls { [DllImport("user32.dll")] internal extern static IntPtr GetDesktopWindow(); [DllImport("user32.dll")] internal extern static IntPtr GetDC( IntPtr windowHandle ); [DllImport("gdi32.dll")] internal extern static IntPtr GetCurrentObject( IntPtr hdc, ushort objectType ); [DllImport("user32.dll")] internal extern static void ReleaseDC( IntPtr hdc ); } public class DesktopImage { public static Image Capture() { IntPtr desktopWindow = NativeCalls.GetDesktopWindow(); IntPtr desktopDC = NativeCalls.GetDC( desktopWindow ); IntPtr desktopBitmap = NativeCalls.GetCurrentObject( desktopDC, 7 ); Image desktopImage = Image.FromHbitmap( desktopBitmap ); NativeCalls.ReleaseDC( desktopDC ); return desktopImage; } } …… private void button1_Click(object sender, System.EventArgs e) { pictureBox1.Image = DesktopImage.Capture(); }