我正在开发一个组件,使用 Delphi 2006,该组件检索系统信息并写入文件。要求是我必须在组件中合并一个全局异常处理程序,因此当异常发生时,它将被捕获并将我的自定义消息显示给用户。
procedure Tmy.GlobalExceptionHandlerThis(Sender : TObject; E : Exception );
begin
//catch the exception and show the message
TakeScreenShotAndSaveInapplicationFolder;
MessageDlg('Exception has Occured , Detail '+E.Message,mtError,[mbOK],0);
end;
这工作正常,但根据要求我必须捕获错误屏幕截图(这是为了直观地找到异常弹出的表单)
所以我这样做了,从delphigeist.com截取屏幕截图代码:
procedure TakeScreenShotAndSaveInapplicationFolder;
var
thisBitmap: TBitmap;
sDate : string;
begin
DateSeparator :='_';
TimeSeparator:='_';
sDate :=DateTimeToStr(now);
thisBitmap := TBitmap.Create;
ScreenshotArea(thisBitmap, Screen.DesktopRect, True);
thisBitmap.SaveToFile(ExtractFilePath(Application.ExeName)+sDate+'.jpg');
FreeAndNil(thisBitmap);
end;
问题:
发生异常时,我也想截取消息的屏幕截图,但使用我的代码会发生这种情况
谁能告诉我怎样才能得到这样的屏幕截图?那就是沿着表格获取消息
MessageDlg('Exception has Occured, Detail ' + E.Message,mtError,[mbOK],0);
是模态的,所以在消息之后我无法截屏。在我不能之前,那么当显示异常消息时,我什么时候可以直接截屏?
procedure Tmy.GlobalExceptionHandlerThis(Sender : TObject; E : Exception );
begin
//catch the exception and show the message
TakeScreenShotAndSaveInapplicationFolder;
MessageDlg('Exception has Occured , Detail '+E.Message,mtError,[mbOK],0);
TakeScreenShotAndSaveInapplicationFolder;
end;