blacklist
Вот тебе работа с AccessViolation, остальное по аналогии:
Код:
static int filter(EXCEPTION_POINTERS *xp)
{
int return_code;
EXCEPTION_RECORD *xr = xp->ExceptionRecord;
switch (xr->ExceptionCode)
{
case EXCEPTION_ACCESS_VIOLATION:
return_code = EXCEPTION_EXECUTE_HANDLER;
ShowMessage("ExceptionCode: "+IntToStr(xr->ExceptionCode)+"\nExceptionAddress: "+IntToHex((int)xr->ExceptionAddress,8));
break;
default:
return_code = EXCEPTION_CONTINUE_SEARCH;
break;
};
return return_code;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
EXCEPTION_POINTERS *xp;
try
{
int* p = NULL;
*p = 0x1234;
}
__except (filter(xp=GetExceptionInformation()))
{
//...
}
}