MFC의 VBScript FIX: ScriptControl 보고서 잘못된 언어

기술 자료 번역 기술 자료 번역
기술 자료: 184977 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

이 페이지에서

현상

MFC 응용 프로그램 ScriptControl 개체를 호스팅할 때 다음 오류가 나타날 수 있습니다.
스크립트 엔진이 유효한 언어로 초기화되지 않으므로 작업을 완료할 수 없습니다.
이전에 언어를 위해 VBScript SetLanguage 메서드를 사용하여 설정한 경우에도 발생합니다. JScript 또는 JavaScript 대로 해당 언어에 대한 ScriptControl 개체 지정하면 이 오류가 발생하지 않습니다.

원인

컨트롤로 및 간단한 자동화 개체로 아니라 호스팅된 ScriptControl 개체 제대로 초기화하지 VBScript 지정된 언어입니다 자체가 실패합니다.

해결 방법

두 가지 해결 방법을 다음과 같습니다.
  • 언어 설정하기 전에 취소하십시오.

    오른쪽에서 ScriptControl::SetLanguage("VBScript") 호출하기 전에 ScriptControl::SetLanguage(NULL) 호출을 추가하십시오.
  • ScriptControl 개체 자동화:

    또는 스크립트 제어 완전한 컨트롤이 아니라 단지 자동화 개체를 자동화할 수 있는 ScriptControl 사용하는 응용 프로그램을 전환할 수 있습니다. 이 문서에서는 뿐만 아니라 의해 개선하여 성능 표시된 버그를 해결할 수 있는 장점이 있습니다. 클라이언트 응용 프로그램이 ActiveX 오버헤드가 통해 이동할 필요가 컨트롤 호스팅 협상, 비-UI 스크립트 컨트롤의 본질적으로 필요하지 않습니다.
아래 예제 코드를 사용하는 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());
   }
}
				

현재 상태

Microsoft는 이 문서의 시작 부분에 나열한 제품에서 문제를 확인했습니다. Microsoft Internet Explorer 5이 이 버그가 수정되었습니다.

추가 정보

문제를 재현하기 위한 단계

  1. 새 MFC SDI 응용 프로그램을 기본 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. 새 스크립트 컨트롤 클래스 파일, Scriptcontrol.h, 보기에 있는 # include 및 Resource.h에 ID_SCRIPT_CONTROL # define 추가하십시오. 빌드 및 응용 프로그램을 실행하십시오.

참조

자세한 내용은 Microsoft 기술 자료의 참조하십시오.
184904FILE: MSSCPCTL.EXE 스크립트 컨트롤 헤더 파일 MSSCPCTL.H
자세한 내용은 다음 웹 URL을 참조하십시오.
http://msdn2.microsoft.com/en-us/library/ms950396.aspx

속성

기술 자료: 184977 - 마지막 검토: 2007년 8월 8일 수요일 - 수정: 2.2
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Visual Basic, Scripting Edition 3.0
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition
키워드:?
kbmt kbbug kbfix kbie500fix KB184977 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.
더 이상 지원되지 않는 제품의 KB 내용에 대한 고지 사항
이 문서에서는 Microsoft에서 더 이상 지원하지 않는 제품에 대해 설명합니다. 따라서 이 문서는 "있는 그대로" 제공되며 업데이트되지 않습니다.

피드백 보내기

 

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