using System; using System.Drawing; using System.Drawing.Imaging; using System.Runtime.InteropServices; using System.Windows.Forms; public class PrintScreenHelper { [DllImport("user32.dll")] private static extern IntPtr GetForegroundWindow(); [DllImport("user32.dll")] private static extern bool GetWindowRect(IntPtr hWnd, out RECT rect); [StructLayout(LayoutKind.Sequential)] private struct RECT { public int Left; public int Top; public int Right; public int Bottom; } public static Bitmap CaptureActiveWindow() { IntPtr hWnd = GetForegroundWindow(); RECT rect; GetWindowRect(hWnd, out rect); int width = rect.Right - rect.Left; int height = rect.Bottom - rect.Top; Bitmap bmp = new Bitmap(width, height, PixelFormat.Format32bppArgb); using (Graphics g = Graphics.FromImage(bmp)) { g.CopyFromScreen(rect.Left, rect.Top, 0, 0, new Size(width, height), CopyPixelOperation.SourceCopy); } return bmp; } public static void SaveCapture(string filePath) { Bitmap bmp = CaptureActiveWindow(); bmp.Save(filePath, ImageFormat.Png); bmp.Dispose(); } public static void SaveCapture() { using (SaveFileDialog saveFileDialog = new SaveFileDialog()) { saveFileDialog.Filter = "Arquivos de imagem (*.png)|*.png|Todos os arquivos (*.*)|*.*"; saveFileDialog.Title = "Salvar Captura de Tela"; saveFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures); if (saveFileDialog.ShowDialog() == DialogResult.OK) { Bitmap bmp = CaptureActiveWindow(); bmp.Save(saveFileDialog.FileName, ImageFormat.Png); bmp.Dispose(); } } } }