Dav*_*Lay 2 .net outlook screenshot attachment .net-2.0
背景:
我正在开发一个业务应用程序,在最后阶段我们遇到一些额外的错误,主要是连接和一些边缘用例.
对于这种异常,我们现在提供一个包含错误详细信息的精彩对话框,用户可以截取屏幕截图,并通过电子邮件发送一些评论.
问题:
我想提供更好的体验,并在同一个对话框中提供单个按钮,点击,打开Outlook并准备电子邮件,屏幕截图作为附件,也许是日志文件,然后用户可以添加备注并按发送按钮.
题:
如何以编程方式截取此屏幕截图,然后将其作为附件添加到Outlook邮件中?
备注:
该应用程序位于Microsoft .Net Framework 2.0,C#或VB中
以下代码将执行您的问题的屏幕截图:
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;
}
Run Code Online (Sandbox Code Playgroud)
这将返回包含主屏幕截图的字节数组.如果您需要处理多个监视器,那么您还需要查看Screen的AllScreens属性.
像这样的库可以处理所有未处理的异常,截取屏幕截图和发送电子邮件等等,但他们很可能会尝试自己发送屏幕截图,而不是将其附加到新的Outlook电子邮件中.
首先,要发送屏幕截图,您可以使用以下代码:
//Will contain screenshot
Bitmap screenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb);
Graphics screenshotGraphics = Graphics.FromImage(bmpScreenshot);
//Make the screenshot
screenshotGraphics.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);
screenshot.save("a place to temporarily save the file", ImageFormat.Png);
Run Code Online (Sandbox Code Playgroud)
要通过outlook发送邮件,您可以使用此处描述的方法
| 归档时间: |
|
| 查看次数: |
5897 次 |
| 最近记录: |