66 lines
1.9 KiB
C#
66 lines
1.9 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|