Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Обработка ошибок Win Api Добавлено: 13.05.07 12:02  

Автор вопроса:  Arvitaly | Web-сайт: okazani.ru | ICQ: 301746136 
Привет, кто-нибудь знает функцию перехвата ошибок API, аналог on error???

Ответить

  Ответы Всего ответов: 12  

Номер ответа: 1
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #1 Добавлено: 13.05.07 12:25
Привет, вы не прошли квалификацию в подготовительную группу и остаётесь на повторное обучение в средней.

Занятие по теме "Функции API, кроме отдельно стоящей микроскопической группы, не вызывают исключений вообще, а вместо этого возвращают признак успеха или неудачи" будет завтра, не опоздайте.

Ответить

Номер ответа: 2
Автор ответа:
 Arvitaly



ICQ: 301746136 

Вопросов: 28
Ответов: 549
 Web-сайт: okazani.ru
 Профиль | | #2
Добавлено: 13.05.07 12:37
Нет, какая-то функция была, просто я не помню и найти не могу.

А, например, если прога не завершается аварийно, то есть функция GetLasError()

А есть еще какая-то для перехвата ошибки раньше OS WINDOWS

Ответить

Номер ответа: 3
Автор ответа:
 W[4Fh]LF



Вопросов: 0
Ответов: 187
 Web-сайт: hunger.ru
 Профиль | | #3
Добавлено: 13.05.07 13:14
Можно проанализировать стек, раскрутить SEH-chain и внедриться туда. Дерзай!

Ответить

Номер ответа: 4
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #4 Добавлено: 13.05.07 18:22
Вообще-то все апи (ну может почти все) возвращают результат своей работы (т.е. ошибки отлавливаются именно через этот возвращаемый результат)

Ответить

Номер ответа: 5
Автор ответа:
 VisualPaul



ICQ: 402519798 

Вопросов: 12
Ответов: 111
 Профиль | | #5 Добавлено: 13.05.07 18:37
Ага. Примеры:
Public Declare Function MoveToEx Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, lpPoint As POINTAPI) As Long
Public Declare Function ShowCaret Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function CloseMetaFile Lib "gdi32" (ByVal hMF As Long) As Long
Public Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Public Declare Function Ellipse Lib "gdi32" (ByVal hdc As Long, ByVal x1 As Long, ByVal y1 As Long, ByVal x2 As Long, ByVal y2 As Long) As Long
Public Declare Function Rectangle Lib "gdi32" (ByVal hdc As Long, ByVal x1 As Long, ByVal y1 As Long, ByVal x2 As Long, ByVal y2 As Long) As Long
Public Declare Function PlaySound Lib "winmm.dll" (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long
Public Declare Function PlayMetaFile Lib "gdi32" (ByVal hdc As Long, ByVal hMF As Long) As Long
Public Declare Function Polygon Lib "gdi32" (ByVal hdc As Long, lpPoint() As POINTAPI, ByVal nCount As Long) As Long
Public Declare Function CopyMetaFile Lib "gdi32" (ByVal hMF As Long, ByVal lpFileName As String) As Long
Public Declare Function CreateCaret Lib "user32" (ByVal hwnd As Long, ByVal hBitmap As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
Public Declare Function CreateMetaFile Lib "gdi32" (ByVal lpString As String) As Long
Public Declare Function CreatePatternBrush Lib "gdi32" (ByVal hBitmap As Long) As Long
Public Declare Function MessageBeep Lib "user32" (ByVal wType As Long) As Long
Public Declare Function MessageBox Lib "user32" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long
Public Declare Function HideCaret Lib "user32" (ByVal hwnd As Long) As Long

Все long int.Значения узнать легко.Например:
Debug.Print PlaySound ("C:\WINDOWS\Media\chord.wav",0,0)

Далее понятно

Ответить

Номер ответа: 6
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #6
Добавлено: 13.05.07 20:42
GSerg, а какие апи вызывают вбшные исключения?

Ответить

Номер ответа: 7
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #7 Добавлено: 13.05.07 21:00
Кто сказал VBшные?.. Там такое не написано, там написано исключения... EnterCriticalSection, например.

Ответить

Номер ответа: 8
Автор ответа:
 ZagZag



ICQ: 295002202 

Вопросов: 87
Ответов: 1684
 Профиль | | #8 Добавлено: 14.05.07 08:54
АПИ не вызывают вбшных ошибок. ВБ-ошибки надо отлавливать с помощью вбшных средств
On Error Goto metka_obrabotchika_oshibki
' код
Exit Sub
metka_obrabotchika_oshibki:
    MsgBox Err.Description
    Resume Next

или
On Error Resume Next
' код
' место, где возможна ошибка
  If Err.Number>0 Then MsgBox Err.Description
' код


Ответить

Номер ответа: 9
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #9 Добавлено: 14.05.07 13:53
АПИ достаточно часто вызывают GPF. При желании отследить можно, а вот продолжить после них работу - довольно сложно. Я как то пытлася, и лучше что вышло - это логирование ошибки в файл с последующим завершением работы. Ну, может в некоторых случаях за счет раскруки стека и можно...

Ответить

Номер ответа: 10
Автор ответа:
 Arvitaly



ICQ: 301746136 

Вопросов: 28
Ответов: 549
 Web-сайт: okazani.ru
 Профиль | | #10
Добавлено: 14.05.07 16:36
да, речь именно об GPF, и в какой-то книге я прочитал давно уже что было что то прям стандартное, давно была я внимание не обратил, а вот теперь понадобилось а вспомнить не могу и книжку кто-то спер

Ответить

Номер ответа: 11
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #11 Добавлено: 14.05.07 17:11
Ну можешь попробовать SetUnhandledExceptionFilter, однако не обнадеживайся - такие ошибки, как правило, не возобновляемые...

Ответить

Номер ответа: 12
Автор ответа:
 W[4Fh]LF



Вопросов: 0
Ответов: 187
 Web-сайт: hunger.ru
 Профиль | | #12
Добавлено: 15.05.07 15:02
SEH может и не помочь, ибо внутри функций устанавливаются свои фреймы. А вот векторная обработка исключений(VEH) тебе поможет.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам