Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++: WinAPI
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/10: Рейтинг темы: голосов - 10, средняя оценка - 4.80
Crazyman
17 / 14 / 3
Регистрация: 16.09.2008
Сообщений: 335
1

Как показать свое окно ошибки, а не системное?

30.11.2008, 00:47. Просмотров 1901. Ответов 3
Метки нет (Все метки)

как показать свое окно ошибки а не системное. Когда стоит Doctor Watson то он показывает ошибки. У меня ваше стоит Delphi и она показывает их. Мне надо чтобы моя прога показывала ошибку а не все выше перечисленное !
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.11.2008, 00:47
Ответы с готовыми решениями:

Вывести свое окно с текстом ошибки
Мне надо вывести свое окно с текстом ошибки. Я НЕ ИСПОЛЬЗУЮ TFORM. Я все окно создаю с помощью...

Встроить свое окно в окно чужой программы
Что то я не могу допереть как такое можно организовать,Хочу свое окно в чужую программу...

Как сделать так чтобы когда например системное время будет 20:00 показать мессидж!
Здрасте форумчани Как сделать так чтобы когда например системное время будет 20:00 показать...

Создать окно произвольного размера, скрыть окно, показать окно, удалить окно.
Создать окно произвольного размера, скрыть окно, показать окно, удалить окно. Для создания окна...

Вывод чужой программы в свое окно. Как?
Есть программа , запускаю Process p = new Process(); ProcessStartInfo psi = new...

3
Ensase
Флудер
192 / 30 / 11
Регистрация: 23.03.2007
Сообщений: 334
01.12.2008, 01:16 2
Нужно перехватывать (обрабатывать) исключения. Необработанные исключения все равно будут перехватываться системным отладчиком. Лучше всего про обработку исключений под windows (SEH) написано у Дж.Рихтера или у Ч.Петзольда (несколько статей по данному вопросу выложено на www.wasm.ru)
0
Crazyman
17 / 14 / 3
Регистрация: 16.09.2008
Сообщений: 335
01.12.2008, 02:38  [ТС] 3
try except это не то. ошибка может вилеть и в месте где нет try except. У меня стоит когд чтобы перехвачивать их, но если включен др ватсон то я не могу вивести свое окно

Добавлено через 33 минуты 19 секунд
хоть бы дал полную ссылку http://www.wasm.ru/article.php?article=veh
0
xzibite
1 / 1 / 2
Регистрация: 24.07.2009
Сообщений: 6
25.07.2009, 00:35 4
Цитата Сообщение от Crazyman Посмотреть сообщение
как показать свое окно ошибки а не системное. Когда стоит Doctor Watson то он показывает ошибки. У меня ваше стоит Delphi и она показывает их. Мне надо чтобы моя прога показывала ошибку а не все выше перечисленное !
Все просто устанавливаем свой обработчик мсключений Винда умывает руки и дает тебе власть над обработкой аппаратных или программных исключений вот когда то писал обработка переполнения стека можете добавить все множество исключений из ntstatus.h и все обрабатывать сами при этом при ошибке показывать свое окно а не определенное в системе по умолчанию
вот код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include "stdio.h"
#include "stdlib.h"
#include "windows.h"
#include "process.h"
#include "winnt.h"
LONG WINAPI ExceptionFilter ( PEXCEPTION_POINTERS info )
{
    EXCEPTION_RECORD SavedExceptRec = *info->ExceptionRecord;
    CONTEXT cnt = *info->ContextRecord;
    char data [ 4096 ] = { 0 };
    char mesg [ 4096 ] = { 0 };
    char buff [ 4096 ] = { 0 };
    sprintf ( data, "Exception: 0x%XL", SavedExceptRec.ExceptionCode );
    switch ( SavedExceptRec.ExceptionCode )
    {
    case EXCEPTION_ACCESS_VIOLATION:
        strcpy ( mesg, "EXCEPTION_ACCESS_VIOLATION" );
        break;
    case EXCEPTION_ARRAY_BOUNDS_EXCEEDED:
        strcpy ( mesg, "EXCEPTION_ARRAY_BOUNDS_EXCEEDED" );
        break;
    case EXCEPTION_BREAKPOINT:
        strcpy ( mesg, "EXCEPTION_BREAKPOINT" );
        break;
    case EXCEPTION_DATATYPE_MISALIGNMENT:
        strcpy ( mesg, "EXCEPTION_DATATYPE_MISALIGNMENT" );
        break;
    case EXCEPTION_FLT_DENORMAL_OPERAND:
        strcpy ( mesg, "EXCEPTION_FLT_DENORMAL_OPERAND" );
        break;
    case EXCEPTION_FLT_DIVIDE_BY_ZERO:
        strcpy ( mesg, "EXCEPTION_FLT_DIVIDE_BY_ZERO" );
        break;
    case EXCEPTION_FLT_INEXACT_RESULT:
        strcpy ( mesg, "EXCEPTION_FLT_INEXACT_RESULT" );
        break;
    case EXCEPTION_FLT_INVALID_OPERATION:
        strcpy ( mesg, "EXCEPTION_FLT_INVALID_OPERATION" );
        break;
    case EXCEPTION_FLT_OVERFLOW:
        strcpy ( mesg, "EXCEPTION_FLT_OVEFLOW" );
        break;
    case EXCEPTION_FLT_STACK_CHECK:
        strcpy ( mesg, "EXCEPTION_FLT_STACK_CHECK" );
        break;
    case EXCEPTION_FLT_UNDERFLOW:
        strcpy ( mesg, "EXCEPTION_FLT_UNDEFLOW" );
        break;
    case EXCEPTION_ILLEGAL_INSTRUCTION:
        strcpy ( mesg, "EXCEPTION_ILLEGAL_INSTRUCTION" );
        break;
    case EXCEPTION_IN_PAGE_ERROR:
        strcpy ( mesg, "EXCEPTION_IN_PAGE_ERROR" );
        break;
    case EXCEPTION_INT_DIVIDE_BY_ZERO:
        strcpy ( mesg, "EXCEPTION_INT_DIVIDE_BY_ZERO" );
        break;
    case EXCEPTION_INT_OVERFLOW:
        strcpy ( mesg, "EXCEPTION_INT_OVERFLOW" );
        break;
    case EXCEPTION_INVALID_DISPOSITION:
        strcpy ( mesg, "EXCEPTION_INVALID_DISPOSITION" );
        break;
    case EXCEPTION_NONCONTINUABLE_EXCEPTION:
        strcpy ( mesg, "EXCEPTION_NONCONTINUABLE_EXCEPTION" );
        break;
    case EXCEPTION_PRIV_INSTRUCTION:
        strcpy ( mesg, "EXCEPTION_PRIV_INSTRUCTION" );
        break;
    case EXCEPTION_SINGLE_STEP:
        strcpy ( mesg, "EXCEPTION_SINGLE_STEP" );
        break;
    case EXCEPTION_STACK_OVERFLOW:
        strcpy ( mesg, "EXCEPTION_STACK_OVERFLOW" );
        break;
    }
    strcat ( mesg, "\nTo get extended error information, see NtStatus.h\n"
                   "Press OK to continue . . . \n" );
    sprintf ( buff , "EDI: %X  ESI: %X  EAX: %X\n"
                     "EBX: %X  ECX: %X  EDX: %X\n"
                     "EIP: %X  EBP: %X  ESP: %X\n"
                     "CS: %X  DS: %X  SS: %X  ES: %X  FS: %X  GS: %X\n"
                     "Dr0 %X  Dr1 %X  Dr2 %X  Dr3 %X  Dr6 %X  Dr7 %X\n"
                     "EFlags: %X  ContextFlags: %X\n",
                     cnt.Edi, cnt.Esi, cnt.Eax,
                     cnt.Ebx, cnt.Ecx, cnt.Edx,
                     cnt.Eip, cnt.Ebp, cnt.Esp,
                     cnt.SegCs, cnt.SegDs, cnt.SegSs,
                     cnt.SegEs, cnt.SegFs, cnt.SegGs,
                     cnt.Dr0, cnt.Dr1, cnt.Dr2, cnt.Dr3,
                     cnt.Dr6, cnt.Dr7, cnt.EFlags, cnt.ContextFlags );
    strcat ( mesg, buff );
    MessageBox ( NULL, mesg, data, MB_ICONEXCLAMATION );
    return EXCEPTION_EXECUTE_HANDLER; }
void death ( void );
int main ( void )
{
    SetUnhandledExceptionFilter ( ExceptionFilter );
    death ( );
}
void death ( void )
{
    char rex [ 409677 ] = "zombie";
    printf ( "%s\n", rex );
    death ( );
}
0
25.07.2009, 00:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.07.2009, 00:35

Как программно вызвать системное окно Windows Настройка даты/времени
Например, окно "Выполнить" средствами API вызыватся так: SendMessage(FindWindow("Shell_TrayWnd",...

Как вызывать свое окно свойств ярлыка программы
Доброго времени суток. Если щелкнуть правой кнопкой мыши по ярлыку FAR'а и выбрать пункт...

Как вызвать из программы системное окно "Точка доступа WLAN"?
Подскажите пожалуйста как вызвать из программы системное окно "Точка доступа WLAN"? Есть программа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru