Como capturar erros em tempo de execução em um host de Script ActiveX

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 232394
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Observação Microsoft Visual C++ 2005, Microsoft Visual C++ .NET 2003 e Microsoft Visual C++ .NET 2002 oferecem suporte o modelo de código gerenciado fornecido pelo Microsoft .NET Framework e o modelo de código do Windows de Microsoft nativo não gerenciado. As informações neste artigo se aplicam somente ao código do Visual C++ não gerenciado.
Sumário
Como todos os programas, scripts em execução em um Script ActiveX Host pode lançar dois tipos de erros, tempo de compilação e tempo de execução. Em implementações anteriores, o mecanismos scripts ActiveX fornecido pela Microsoft (VBScript e JScript), não feita nenhuma distinção entre os dois tipos de erros. Ambos foram tratados em IActiveScriptSite::OnScriptError() . Com versões mais recentes dos mecanismos de script, foi feita uma distinção entre erros de tempo de execução e tempo de compilação. Erros de tempo de compilação, como erros de sintaxe, ainda são relatados para o host de scripts ActiveX usando o método IActiveScriptSite::OnScriptError() . No entanto, erros de tempo de execução, como passando argumentos inválidos, não são relatados diretamente para OnScriptError() . Em vez disso, eles são relatados para um método diferente, IActiveScriptSiteDebug::OnScriptErrorDebug() .

Este artigo descreve como modificar um host de Script ActiveX existente para capturar erros de tempo de execução lançados de scripts.
Mais Informações
Este artigo presume que você já escreveu um host de Script ActiveX. Para obter mais informações sobre como fazer isso, consulte os artigos observados na seção "Referências" deste artigo.

Nas versões mais recentes dos mecanismos de script, IActiveScriptSiteDebug::OnScriptErrorDebug é chamado quando ocorre um erro em tempo de execução. A interface IActiveScriptSiteDebug oferece o host de scripts a oportunidade de participar de depuração antes do depurador está envolvida. Para que o host de scripts ser notificado quando um erro em tempo de execução ocorre, uma implementação mínima de IActiveScriptSiteDebug é necessária.

Quando o método IActiveScript::SetScriptSite é chamado, o mecanismo de script será QueryInterface IActiveScriptSite ponteiro do host para a interface IActiveScriptSiteDebug . Se isso falhar, o mecanismo de script tentará contatar o depurador de script no seu próprio. No entanto, se a QueryInterface for bem sucedida, o mecanismo de script, em seguida, chamar IActiveScriptSiteDebug::GetApplication() para estabelecer os recursos de depuração para a sessão de script. Se IActiveScriptSiteDebug::GetApplication() falhar, o mecanismo de script será concluir que depuração não está disponível na máquina e reverter para IActiveScriptSite::OnScriptError() para todos os tratamento de erros.

Essa é a interface IActiveScriptSiteDebug , com uma implementação 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;}				
Observação Visual C++ 2005, você deve adicionar a opção de compilador de suporte de tempo de execução idioma comum ( / CLR: oldSyntax ) para compilar o exemplo de código anterior com êxito. Para adicionar a opção de compilador de suporte de tempo de execução idioma comum, siga estas etapas:
  1. Clique em projeto e, em seguida, clique em propriedades ProjectName.

    Observação ProjectName é um espaço reservado para o nome do projeto.
  2. Expanda Configuration Properties e, em seguida, clique em Geral .
  3. No painel direito, clique para selecionar Common Language Runtime suporte, sintaxe antiga (/ CLR: oldSyntax) nas configurações de projeto oferece suporte a Common Language Runtime .
  4. Clique em Aplicar e, em seguida, clique em OK .
Para obter mais informações sobre idioma comum suporte em tempo de execução opções do compilador, visite o seguinte site da Web Microsoft Developer Network (MSDN): Como alternativa, um host de scripts pode optar por ter uma implementação mais completa da interface IActiveScriptSiteDebug . Para documentação sobre a interface IActiveScriptSiteDebug , visite o MSDN seguinte site:
Referências
Para obter mais informações sobre a criação de Script ActiveX, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
223139Como adicionar suporte para hospedar o VBScript para um aplicativo ATL
183698Axsh.exe demonstra como implementar um host de script ativo
168214MFCAxs.exe implementa um host de scripts Active usando MFC
223389Arquivo Scripting.exe contém os cabeçalhos e bibliotecas que são necessárias para criar o Script ActiveX hosts e mecanismos

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 232394 - Última Revisão: 02/23/2014 13:48:00 - Revisão: 5.3

Microsoft Visual C++ 2005 Express Edition, Microsoft Visual C++ .NET 2003 Standard Edition, Microsoft Visual C++ .NET 2002 Standard Edition, Microsoft Visual C++ 6.0 Professional Edition, Microsoft Visual C++ 6.0 Enterprise Edition, Microsoft Visual C++, 32-bit Learning Edition 6.0, Microsoft Visual C++ 5.0 Professional Edition, 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

  • kbnosurvey kbarchive kbmt kbactivexscript kbhowto KB232394 KbMtpt
Comentários