Cómo mostrar un error de forma detallada al llamar a un API.

La mayor parte de las APIs de 32 bits retornan información detallada sobre el error producido en caso de fallo. Para obtener esta información en un formato adecuado y útil, se pueden utilizar las funciones de la API GetLastError y FormatMessage.

Cuando quieras comprobar el error que ha producido una función API usa lo siguiente:

MsgBox InformacionError

Aquí tienes el código de La función InfErrorAPI:

Option Explicit
Public Declare Function GetLastError Lib "kernel32" () As Long
Public Declare Function FormatMessage Lib "kernel32" Alias "FormatMessageA" (ByVal dwFlags As Long, lpSource As Any, ByVal dwMessageId As Long, _
   ByVal dwLanguageId As Long, ByVal lpBuffer As String, ByVal nSize As Long, Arguments As Long) As Long
Public Const FORMAT_MESSAGE_FROM_SYSTEM = &H1000
Public Function InfErrorAPI() As String
    Dim sError As String * 500
    Dim lErrNum As Long, lErrMsg As Long
    
    ' Obtenemos el Código del último error producido
    lErrNum = GetLastError
    ' Obtenemos el texto aclaratorio del error
    lErrMsg = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, ByVal 0&, lErrNum, 0, sError, Len(sError), 0)
    InfErrorAPI = Format(lErrNum) & ": " & Trim(sError)
End Function
Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s