以下代码将执行您问题的屏幕截图:
public byte[] TakeScreenshot()
{
byte[] bytes;
Rectangle bounds = Screen.PrimaryScreen.Bounds;
using (Bitmap bmp = new Bitmap(bounds.Width, bounds.Height, PixelFormat.Format32bppArgb))
{
using (Graphics gfx = Graphics.FromImage(bmp))
{
gfx.CopyFromScreen(bounds.X, bounds.Y, 0, 0, bounds.Size, CopyPixelOperation.SourceCopy);
using (MemoryStream ms = new MemoryStream())
{
bmp.Save(ms, ImageFormat.Jpeg);
bytes = ms.ToArray();
}
}
}
return bytes;
}
这将返回一个包含主屏幕截图的字节数组。如果您需要处理多个显示器,那么您还需要查看Screen的AllScreens属性。
像这样的库可以处理所有未处理的异常,截取屏幕截图并通过电子邮件发送等等,但他们很可能会尝试自己发送屏幕截图,而不是将其附加到新的 Outlook 电子邮件中。