Update: ScriptControl Berichte ungültige Sprache für VBScript in MFC

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 184977 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

Problembeschreibung

Wenn das Objekt ScriptControl in einer MFC-Anwendung zu hosten, erhalten Sie die folgende Fehlermeldung:
Der Vorgang konnte nicht abgeschlossen werden, da das Skriptmodul nicht für eine gültige Sprache initialisiert wurde.
Dies geschieht, obwohl Sie zuvor die Sprache in VBScript festlegen mithilfe der Spracheinstellung-Methode. Dieser Fehler tritt nicht auf, wenn Sie JScript oder JavaScript als die Sprache des ScriptControl-Objekts angeben.

Ursache

Wenn als Steuerelement (und nicht nur als einfache Automatisierungsobjekt) gehostet, nicht des ScriptControl-Objekts selbst korrekt initialisieren, wenn die angegebene Sprache VBScript ist.

Lösung

Hier sind zwei Lösungen:
  • Deaktivieren Sie die Sprache, bevor es festgelegt wird:

    Fügen Sie direkt vor dem Aufruf ScriptControl::SetLanguage("VBScript") einen Aufruf zu ScriptControl::SetLanguage(NULL) hinzu.
  • Automatisieren des ScriptControl-Objekts:

    Alternativ dazu können Anwendungen, die die ScriptControl wechseln, zum Automatisieren des Skript-Steuerelements als ein vollständige Steuerelement, sondern nur als ein Automatisierungsobjekt. Dies hat den Vorteil des Abschlusses des Fehlers durch diese Artikel sowie die Leistung erhöhen angegeben. Die Clientanwendung muss nicht durchlaufen der Aufwand für das ActiveX-Steuerelement hosten der Aushandlung im Wesentlichen für den nicht-UI Skript Control unnötig ist.
Im folgenden ist ein Stück des Beispielcodes, verwendet Visual C++ 5.0 COM zu leicht CoCreateInstance des ScriptControl unterstützen und aktivieren.

Beispielcode

// 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 hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel Microsoft-Produkten handelt. Dieser Bug wurde in Microsoft Internet Explorer 5 behoben.

Weitere Informationen

Schritte zum Reproduzieren des Verhaltens

  1. Erstellen Sie eine neue MFC-SDI-Anwendung mit den Standardeinstellungen AppWizard Einstellungen, einschließlich Unterstützung für ActiveX-Steuerelemente.
  2. Einfügen des ScriptControl "ScriptControl Objekt" aus dem Ordner "Registriert ActiveX-Steuerelemente" unter der Project\Add Project\Components und Steuerelementen Menüelement auswählen. Akzeptieren Sie alle Standardeinstellungen auf die Dialogfelder, die folgen.
  3. Fügen Sie in der OnInitialUpdate-Methode der Ansicht den folgenden Code:
    // 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. Fügen Sie eine # include für die neue Steuerelement Klasse Skriptdatei, scriptcontrol.h, zur Ansicht und # define ID_SCRIPT_CONTROL in Ihre Resource.h. Erstellen Sie die Anwendung, und führen Sie sie aus.

Informationsquellen

Weitere Informationen finden Sie in der folgenden Artikel der Microsoft Knowledge Base:
184904Datei: MSSCPCTL.EXE Skript Steuerelement Headerdatei MSSCPCTL.H
Weitere Informationen finden Sie in der folgenden World Wide Web-URL:
http://msdn2.microsoft.com/en-us/library/ms950396.aspx

Eigenschaften

Artikel-ID: 184977 - Geändert am: Mittwoch, 8. August 2007 - Version: 2.2
Die Informationen in diesem Artikel beziehen sich auf:
  • Visual Basic Scripting Edition 3.0
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition
Keywords: 
kbmt kbbug kbfix kbie500fix KB184977 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 184977
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.
Disclaimer zu nicht mehr gepflegten KB-Inhalten
Dieser Artikel wurde für Produkte verfasst, für die Microsoft keinen Support mehr anbietet. Der Artikel wird deshalb in der vorliegenden Form bereitgestellt und nicht mehr weiter aktualisiert.

Ihr Feedback an uns

 

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