Cómo detectar errores en tiempo de ejecución en un host de secuencias de comandos ActiveX

Seleccione idioma Seleccione idioma
Id. de artículo: 232394 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Nota Microsoft Visual C++ 2005, Visual C++ .NET 2003 y Visual C++ .NET 2002 admiten tanto el modelo de código administrado suministrada por Microsoft .NET Framework y el modelo de código nativo no administrado de Microsoft Windows. La información de este artículo sólo se aplica al código no administrado de Visual C++.
Expandir todo | Contraer todo

Resumen

Al igual que todos los programas, secuencias de comandos que se ejecutan en una secuencia de comandos ActiveX Host puede producir dos tipos de errores, tiempo de compilación y tiempo de ejecución. En las implementaciones anteriores, los motores de secuencias de comandos ActiveX proporcionada por Microsoft (VBScript y JScript), realizado hay distinción entre los dos tipos de errores. Ambos se controlan en IActiveScriptSite::OnScriptError() . Con versiones más recientes de los motores de secuencias de comandos, se realizó una distinción entre los errores de tiempo de ejecución y tiempo de compilación. Errores de compilación como errores de sintaxis, todavía se notifican al host de secuencias de comandos ActiveX mediante el método IActiveScriptSite::OnScriptError() . Sin embargo, los errores de tiempo de ejecución, tales como pasar argumentos no válidos, no se notifican directamente al OnScriptError() . En su lugar, se informa a un método diferente, IActiveScriptSiteDebug::OnScriptErrorDebug() .

En este artículo describe cómo modificar un host de secuencias de comandos ActiveX existente para detectar errores en tiempo de ejecución iniciados desde secuencias de comandos.

Más información

En este artículo se supone que ya haya escrito un host de secuencia de comandos ActiveX. Para obtener más información sobre cómo hacerlo, vea los artículos que se indicó en la sección "Referencias" de este artículo.

En las versiones más recientes de los motores de secuencias de comandos, se llama a IActiveScriptSiteDebug::OnScriptErrorDebug cuando se produce un error de tiempo de ejecución. La interfaz IActiveScriptSiteDebug proporciona al host de secuencias de comandos una oportunidad de participar en la depuración antes de que el depurador está implicada. Para que el host de secuencias de comandos que se notifique un error en tiempo de ejecución aparece, se requiere una implementación mínima de IActiveScriptSiteDebug .

Cuando se llama al método IActiveScript::SetScriptSite , el motor de secuencias de comandos tendrá QueryInterface IActiveScriptSite puntero del host para la interfaz IActiveScriptSiteDebug . Si esto falla, el motor de secuencias de comandos intentará ponerse en contacto con el depurador de secuencias de comandos en su propia. Sin embargo, si QueryInterface es correcta, el motor de secuencias de comandos llamará IActiveScriptSiteDebug::GetApplication() para establecer los servicios de depuración para la sesión de secuencias de comandos. Si se produce un error en IActiveScriptSiteDebug::GetApplication() , el motor de secuencias de comandos se concluir que no está disponible en el equipo de depuración y volver a IActiveScriptSite::OnScriptError() para todos los tratamiento de errores.

Esta es la interfaz IActiveScriptSiteDebug , con una implementación mínima:
   STDMETHOD(GetDocumentContextFromPosition)(
      DWORD dwSourceContext, 
      ULONG uCharacterOffset, 
      ULONG uNumChars, 
      IDebugDocumentContext **ppsc) {return E_NOTIMPL;}

   STDMETHOD GetApplication( IDebugApplication **ppda ) {return E_NOTIMPL;}

   STDMETHOD(GetRootApplicationNode)( IDebugApplicationNode **ppdanRoot) {return E_NOTIMPL;}
   
   STDMETHOD(OnScriptErrorDebug)( 
      IActiveScriptErrorDebug *pErrorDebug, 
      BOOL *pfEnterDebugger,
      BOOL *pfCallOnScriptErrorWhenContinuing) {return E_NOTIMPL;}
				
Nota en Visual C++ 2005, debe agregar la opción compatibilidad con compilador de common language runtime ( / clr: oldSyntax ) para compilar correctamente el ejemplo de código anterior. Para agregar la opción de compilador de compatibilidad de common language runtime, siga estos pasos:
  1. Haga clic en proyecto y, a continuación, haga clic en propiedades ProjectName.

    Nota ProjectName es un marcador de posición para el nombre del proyecto.
  2. Expanda Propiedades de configuración y, a continuación, haga clic en General .
  3. En el panel derecho, haga clic para seleccionar compatible con Common Language Runtime, sintaxis antigua (/ CLR: oldSyntax) en Common Language Runtime admite la configuración del proyecto.
  4. Haga clic en Aplicar y, a continuación, haga clic en Aceptar .
Para obtener más información acerca de las opciones del compilador con compatibilidad con common language runtime, visite el siguiente sitio Web de Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/k8d11d4s.aspx
Como alternativa, puede elegir que un host de secuencias de comandos tiene una implementación más completa de la interfaz IActiveScriptSiteDebug . Para obtener documentación acerca de la interfaz IActiveScriptSiteDebug , visite MSDN siguiente sitio Web:
http://msdn.microsoft.com/en-us/library/6c5sfkte(VS.85).aspx

Referencias

Para obtener más información sobre la creación de secuencia de comandos ActiveX, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
223139Cómo agregar compatibilidad para alojar VBScript a una aplicación de ATL
183698Axsh.exe muestra cómo implementar un host de secuencias de comandos activa
168214MFCAxs.exe implementa un host Active Script mediante MFC
223389Archivo Scripting.exe contiene los encabezados y bibliotecas que son necesarias para crear la secuencia de comandos ActiveX hosts y motores

Propiedades

Id. de artículo: 232394 - Última revisión: domingo, 23 de febrero de 2014 - Versión: 5.3
La información de este artículo se refiere a:
  • Microsoft Visual C++ 2005 Express Edition
  • Microsoft Visual C++ .NET 2003 Standard
  • Microsoft Visual C++ .NET 2002 Standard
  • Microsoft Visual C++ 6.0 Professional
  • Microsoft Visual C++ 6.0 Enterprise
  • Microsoft Visual C++, 32-bit Learning Edition 6.0
  • Microsoft Visual C++ 5.0 Professional
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Visual Basic, Scripting Edition 5.0
  • Visual Basic, Scripting Edition 4.0
  • Visual Basic, Scripting Edition 3.0
Palabras clave: 
kbnosurvey kbarchive kbmt kbactivexscript kbhowto KB232394 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 232394

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com