FIX: Report ScriptControl linguaggio non valido per VBScript in MFC

Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 184977
Questo articolo è stato archiviato. L’articolo, quindi, viene offerto “così come è” e non verrà più aggiornato.
Sintomi
Quando funge da host l'oggetto ScriptControl in un'applicazione MFC, è analogo il seguente errore:
Impossibile completare l'operazione perché il modulo di gestione di script non è stato inizializzato su una lingua valida.
Questo problema si verifica anche se è in precedenza impostare la lingua per VBScript utilizzando il metodo SetLanguage. Questo errore non si verifica se si specifica un JScript o JavaScript come la lingua per l'oggetto ScriptControl.
Cause
Se ospitato come controllo (e non come un oggetto di automazione semplice), l'oggetto ScriptControl non riesce a inizializzare correttamente se la lingua specificata è VBScript.
Risoluzione
Di seguito sono due soluzioni:
  • Prima di impostarla, cancellare la lingua:

    Consente di aggiungere una chiamata a ScriptControl::SetLanguage(NULL) diritto prima di chiamare ScriptControl::SetLanguage("VBScript").
  • L'oggetto ScriptControl di automazione:

    In alternativa, le applicazioni che utilizzano il ScriptControl possono passare per automatizzare il controllo script solo come un oggetto di automazione anziché come un controllo completo. Questo ha il vantaggio di risoluzione del bug indicato da questo articolo, nonché il potenziamento delle prestazioni. L'applicazione client non è necessario passare attraverso il sovraccarico di ActiveX controllo hosting negoziazione, che è essenzialmente necessario per il non UI script controllo.
Di seguito è una parte del codice di esempio che utilizza COM di Visual c ++ 5.0 supporta a CoCreateInstance facilmente il ScriptControl e attivarlo.

Codice di esempio

// Import Type Info from Script OCX - point path to the// location of the Script Control on your development computer.#import "C:\Program Files\Microsoft Script Control\msscript.ocx"void CScrptctrlView::OnInitialUpdate(){   CView::OnInitialUpdate();   OleInitialize(NULL); // Only if you haven't done this already                        // or called AfxOleInit.   using namespace MSScriptControl;   try  // Make sure exception handling is turned on.   {      _bstr_t bstrLanguage(L"VBScript");      _bstr_t bstrCode(L"MsgBox \"Hello World\"");      // Create the Script Control, initialize Language, and      // add code for processing.      IScriptControlPtr spScriptCtl(__uuidof(ScriptControl));      spScriptCtl->put_Language(bstrLanguage);      spScriptCtl->AddCode(bstrCode);   }   catch(_com_error e)   {      TRACE(_T("Error (%08x) in %s: %s\n"), e.Error(),                           e.Source(), e.Description());   }}				
Status
Microsoft ha confermato che questo un bug nei prodotti Microsoft elencati all'inizio di questo articolo. Questo problema è stato risolto in Microsoft Internet Explorer 5.
Informazioni

Procedura per riprodurre il problema

  1. Creare una nuova applicazione di SDI di MFC con la predefinita impostazioni di creazione guidata applicazione, inclusi il supporto per i controlli ActiveX.
  2. Inserire il ScriptControl selezionando "ScriptControl oggetto" dalla cartella "Registrato ActiveX Controls" sotto il Project\Add a controlli e Project\Components voce di menu. Accettare tutte le impostazioni predefinite in finestre di dialogo che seguono.
  3. Nel metodo OnInitialUpdate della visualizzazione, inserire il codice seguente:
    // Import Type Info from Script OCX - point path to the// location of the Script Control on your development computer.#import "C:\Program Files\Microsoft Script Control\msscript.ocx"void CScrptctrlView::OnInitialUpdate(){  CView::OnInitialUpdate();  OleInitialize(NULL); // Only if you haven't done this already                       // or called AfxOleInit.  using namespace MSScriptControl;  try  // Make sure exception handling is turned on.  {     _bstr_t bstrLanguage(L"VBScript");     _bstr_t bstrCode(L"MsgBox \"Hello World\"");     // Create the Script Control, initialize Language, and     // add code for processing.     IScriptControlPtr spScriptCtl(__uuidof(ScriptControl));     spScriptCtl->put_Language(bstrLanguage);     spScriptCtl->AddCode(bstrCode);  }  catch(_com_error e)  {     TRACE(_T("Error (%08x) in %s: %s\n"), e.Error(),                          e.Source(), e.Description());  }}						
  4. Aggiungere # include per il nuovo controllo classe file di script, scriptcontrol.h, alla visualizzazione e # define ID_SCRIPT_CONTROL nel Resource.h. Compilare ed eseguire l'applicazione.
Riferimenti
Per ulteriori informazioni, consultare il seguente articolo della Microsoft Knowledge Base riportato di seguito:
184904FILE: Script MSSCPCTL.EXE controllo file di intestazione MSSCPCTL.H
Per ulteriori informazioni, vedere il seguente URL Web:
Controllo Script ScriptControl kbScript

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 184977 - Ultima revisione: 12/05/2015 08:37:22 - Revisione: 2.2

Visual Basic, Scripting Edition 3.0, Microsoft Visual C++ 5.0 Enterprise Edition, Microsoft Visual C++ 5.0 Professional Edition

  • kbnosurvey kbarchive kbmt kbbug kbfix kbie500fix KB184977 KbMtit
Feedback