Исправление: Отчеты ScriptControl недопустимый язык VBScript в MFC

Переводы статьи Переводы статьи
Код статьи: 184977 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Проблема

При размещении объекта ScriptControl в приложение MFC, может появиться следующее сообщение об ошибке:
Не удается выполнить операцию, так как обработчик сценария не был инициализирован на правильный язык.
Это происходит, даже если ранее выбран язык VBScript с помощью метода SetLanguage. Эта ошибка не возникает, если указать JScript или JavaScript в качестве языка для объекта ScriptControl.

Причина

При размещении элемента управления (и как простой автоматизации объектов), объект ScriptControl не удается правильно инициализировать себя, если указанный язык VBScript.

Решение

Ниже приведены два способа решения.
  • Очистите язык перед заданием:

    Добавьте вызов ScriptControl::SetLanguage(NULL) до вызова ScriptControl::SetLanguage("VBScript").
  • Автоматизация ScriptControl объекта:

    Кроме того приложения, использующие ScriptControl перейдите в автоматизации управления сценария, так же, как объект автоматизации, а не полный элемент управления. Это имеет преимущество при разрешении ошибки, указанный в этой статье, а также повышает производительность. Клиентское приложение не требуется выполнить дополнительные издержки на ActiveX элемент управления, размещение согласования, который является по существу ненужные для не - Интерфейс сценария управления.
Ниже приведен фрагмент примера код, который использует Visual C++ 5.0 COM поддерживает легко CoCreateInstance ScriptControl и активировать его.

Пример программы

// 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());
   }
}
				

Статус

Данное поведение является подтвержденной ошибкой продуктов Майкрософт, перечисленных в начале данной статьи..Данная ошибка была исправлена в обозревателе Internet Explorer 5.

Дополнительная информация

Действия для воспроизведения поведения:

  1. Создание нового приложения SDI в MFC по умолчанию параметры AppWizard, включая поддержку для элементов управления ActiveX.
  2. Вставьте ScriptControl, выбрав "ScriptControl объект" из папки «Зарегистрированные элементы управления ActiveX» в разделе Project\Add Project\Components и элементы управления пункта меню. Примите все значения по умолчанию в диалоговых окнах, которые следуют за.
  3. В методе OnInitialUpdate представления вставьте следующий код:
    // 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. Добавление # include для сценария управления файл нового класса, Scriptcontrol.h, представление и # define ID_SCRIPT_CONTROL в вашем файле Resource.h. Создайте и запустите приложение..

Ссылки

За дополнительной информацией обратитесь к следующей статье Microsoft Knowledge base::
184904FILE: Файл заголовка элемента управления сценарий MSSCPCTL.EXE MSSCPCTL.H
За дополнительной информацией обратитесь к АДРЕСУ Интернета:
http://msdn2.Microsoft.com/en-us/library/ms950396.aspx

Свойства

Код статьи: 184977 - Последний отзыв: 15 ноября 2010 г. - Revision: 2.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition
Ключевые слова: 
kbbug kbfix kbie500fix kbmt KB184977 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:184977
Заявление об отказе относительно содержимого статьи о продуктах, поддержка которых прекращена
Эта статья содержит сведения о продуктах, поддержка которых корпорацией Майкрософт прекращена. Поэтому она предлагается как есть и обновляться не будет.

Отправить отзыв

 

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