Скриншот ошибки

Den Smart
Дата: 07.06.2011 18:07:32
можно ли сделать его программно ?

дайте хоть малеький пример. желательно без application.onexception (слышал, что ловит не все эксцепшены).

пробовал поэкспериментировать с компонентом ApplicationEvents, и нифига...

procedure TForm1.appeventsException(Sender: TObject; E: Exception);
begin

 MessageDlg(e.Message, mtError, [mbOk], 0);
 GetScreen(Sender);
end;

procedure TForm1.GetScreen(Sender: TObject);
var
 DC : HDC;
 bmp : TBitmap;
 jpgImg: TJPEGImage;
begin

 bmp := TBitmap.Create;
 jpgImg := TJPEGImage.Create;
 bmp.Height := Screen.Height;
 bmp.Width := Screen.Width;
 DC := GetDC(0);
 bitblt(bmp.Canvas.Handle, 0, 0, Screen.Width, Screen.Height, DC, 0, 0, SRCCOPY);
 ReleaseDC(0, DC);
 jpgImg.Assign(bmp);
 jpgImg.Grayscale;
 jpgImg.CompressionQuality:=75;
 jpgImg.SaveToFile('Screenshot.jpg');
 jpgImg.Free;
 bmp.Free;

end;

procedure TForm1.Button2Click(Sender: TObject);
var i: integer;
begin
  i:=0;

  i:= strtoint(Edit1.Text) mod strtoint(Edit2.Text) ;
end;
Кроик Семён
Дата: 07.06.2011 18:09:35
Den Smart
пробовал поэкспериментировать с компонентом ApplicationEvents, и нифига...


А что именно
fd00ch
Дата: 07.06.2011 18:11:57
Den Smart
желательно без application.onexception (слышал, что ловит не все эксцепшены)
пробовал поэкспериментировать с компонентом ApplicationEvents
гы

Den Smart
MessageDlg(e.Message, mtError, [mbOk], 0);
GetScreen(Sender);
тут ты рассчитывал показать окно с ошибкой и сделать его скриншот? :-)
Den Smart
Дата: 07.06.2011 18:23:46
fd00ch,

да, знаю, что оно закроется, и скриншота не будет.
но, блин, как же иначе сделать скриншот ошибки, не нажимая на этот "ОК" ? :-(
Кроик Семён
Дата: 07.06.2011 18:28:40
K вопросу не относится, но рекомендую вместо JPEG'a сохранять в PNG.
Файлы не больше получаются, а качество выше, т.к. без потерь.
Den Smart
Дата: 07.06.2011 18:36:44
Кроик Семён
K вопросу не относится, но рекомендую вместо JPEG'a сохранять в PNG.
Файлы не больше получаются, а качество выше, т.к. без потерь.


не, это лишнее. я буду смотреть не на пиксели, а на код ошибки.
fd00ch
Дата: 07.06.2011 19:30:37
Den Smart
Кроик Семён
K вопросу не относится, но рекомендую вместо JPEG'a сохранять в PNG.
Файлы не больше получаются, а качество выше, т.к. без потерь.
не, это лишнее.
Не лишнее - формат надо выбирать по задаче, а не по любви :-) Если у тебя, конечно, не фотошоп там ну или не супер-навёрнутые скины

По теме: если с костылями - пускать доп. поток, из него фотать. Нормальное решение, на мой взгляд - выводить свой диалог с сообщением и сделать кнопку "Отправить отчет об ошибке", при нажатии на которую делать все что надо
a_titeev
Дата: 07.06.2011 19:30:55
Den Smart
желательно без application.onexception (слышал, что ловит не все эксцепшены).

гы гы
"Интересно, какая зараза хмыренку этому на Хмыря накапала?" (копирайт)
а что по твоему appeventsException - здеся? какой то супер мега способ позволяющий "отловить все исключения" в отличии application.onexception?

судя по последнему вопросу тебе действительно надо сделать скрин окна с сообщением об ошибке??? - гениально! а не думал что просто тупо текст ошибки можно в файлик лога сохранить, а не картинку огроменную???

обычно наоборот делают скрин текущего состояния программы в момент ошибки и в дополнение к логу ошибок сохраняют, а здесь ну уж слишком как-то...
Den Smart
Дата: 07.06.2011 21:53:20
a_titeev
Den Smart
желательно без application.onexception (слышал, что ловит не все эксцепшены).

гы гы
"Интересно, какая зараза хмыренку этому на Хмыря накапала?" (копирайт)
а что по твоему appeventsException - здеся? какой то супер мега способ позволяющий "отловить все исключения" в отличии application.onexception?

судя по последнему вопросу тебе действительно надо сделать скрин окна с сообщением об ошибке??? - гениально! а не думал что просто тупо текст ошибки можно в файлик лога сохранить, а не картинку огроменную???

обычно наоборот делают скрин текущего состояния программы в момент ошибки и в дополнение к логу ошибок сохраняют, а здесь ну уж слишком как-то...


ну, во-первых, слухами земля полнится. на rsdn проскакивало сообщение, что onexception всего не ловит. я и поверил...

во-вторых, насчёт лога - это я тоже думал, просто интереснее сделать скриншот.

в-третьих - спасибо за идею ! тогда можно просто адаптировать вышеприведённый код, но что ж выбрать-то для глобального отлова всех эксцепшенов ? onexception или applicationevents ? (просьба книжками не кидаться)
Den Smart
Дата: 07.06.2011 21:59:40
fd00ch
Den Smart
пропущено...
не, это лишнее.
Не лишнее - формат надо выбирать по задаче, а не по любви :-) Если у тебя, конечно, не фотошоп там ну или не супер-навёрнутые скины


ну, я выбрал jpeg, мне достаточно.

а насчёт потоков - не знаю, имхо это перебор. может, пример приведёшь, как ты себе это представляешь, - чтобы оценить, так сказать, "в какой лес суваться" ?