Erro GDI + Geral sobre ScreenShot
-
05-07-2019 - |
Pergunta
Eu tenho o abaixo exceção de extensão para o meu em casa Winform App. Meu problema é que eu recebo um erro generic GDI+
em ss.save("C:\\HelpMe.jpg", ImageFormat.Jpeg);
Não é todo tempo que ele vai trabalhar e, em seguida, erro fora. Às vezes ele vai trabalhar um par de vezes em uma linha.
É este um "bloqueio" a questão, possivelmente? O que mais devo olhar e / ou estou fazendo errado.
Eu chamo isso como assim ->
catch (Exception ex)
{
ex.LogError(HUD.ShellForm);
}
public static void LogError(this Exception exception, DevExpress.XtraEditors.XtraForm whichForm)
{
GetDesktopImage(whichForm);
SendExceptionMail(exception);
ExceptionMessageBox box = new ExceptionMessageBox(exception);
box.Show(whichForm);
}
private static void SendExceptionMail(Exception exception)
{
SmtpClient smtpClient = new SmtpClient("MailServer");
MailMessage message = new MailMessage
{
From = new MailAddress("MATRIX@anEmail"),
Subject = "MATRIX Application Error",
Body = exception.Message
};
Attachment attachment = new Attachment(@"C:\\HelpMe.jpg");
message.Attachments.Add(attachment);
message.To.Add("Developer@anEmail");
message.To.Add("HelpDesk@anEmail");
smtpClient.Send(message);
}
///<summary>
/// Grabs a screen shot of the App and saves it to the C drive in jpg
///</summary>
private static void GetDesktopImage(DevExpress.XtraEditors.XtraForm whichForm)
{
Rectangle bounds = whichForm.Bounds;
using (Bitmap ss = new Bitmap(bounds.Width, bounds.Height))
using (Graphics g = Graphics.FromImage(ss))
{
g.CopyFromScreen(whichForm.Location, Point.Empty, bounds.Size);
ss.Save("C:\\HelpMe.jpg", ImageFormat.Jpeg);
}
}
Solução
Isso geralmente é porque:
- o diretório de destino não existe
- o nome do arquivo destino já está em uso
- o nome do arquivo alvo é realmente um diretório
- o usuário não tem acesso a gravação para o arquivo de destino
... etc ...
Essencialmente, este é geralmente causada por GDI não ser capaz de criar / gravar o arquivo. BTW, em Vista você não tem acesso de gravação para C: \
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow