[FIX ScriptControl レポート無効な言語 MFC での VBScript の

文書翻訳 文書翻訳
文書番号: 184977 - 対象製品
すべて展開する | すべて折りたたむ

目次

現象

MFC アプリケーション内の ScriptControl オブジェクトをホストして、次のエラーが表示されることがあります。
有効な言語に、スクリプト エンジンが初期化されていないので、操作を完了できませんでした。
これは以前言語設定した VBScript に SetLanguage メソッドを使用する場合でも発生します。 このエラーは、または指定した場合 JScript JavaScript の言語として ScriptControl オブジェクトに対しては発生しません。

原因

ホスト コントロールとして (および単純なオートメーション オブジェクトとしてだけでなく) すると、ScriptControl オブジェクトが VBScript に指定された言語が場合自体正しく初期化失敗します。

解決方法

次の 2 つの回避策は次のとおりです。
  • 設定する前に、言語をオフにします。

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

状況

マイクロソフトではこれが、この資料の冒頭に記載されているマイクロソフト製品のバグとして認識しています。 この問題は、Internet Explorer 5 で修正済みです。

詳細

問題の再現手順

  1. ActiveX コントロールのサポートを含む、AppWizard 設定、既定で新しい MFC SDI アプリケーションを作成します。
  2. 「ScriptControl オブジェクト」ActiveX コントロールの登録済み"フォルダーから、Project\Add で Project\Components とコントロールのメニュー項目を選択して、ScriptControl を挿入します。 以下のダイアログ ボックスのすべての既定値を受け入れます。
  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 し、#define ID_SCRIPT_CONTROL、Resource.h で追加します。 アプリケーションをビルドし、実行します。

関連情報

詳細については、次のアーティクル サポート技術情報」(Microsoft Knowledge Base) を参照してください。
184904ファイル: MSSCPCTL.EXE スクリプト コントロールのヘッダー ファイル MSSCPCTL.H
詳細については、次の Web ページの 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
キーワード:?
kbbug kbfix kbie500fix kbmt KB184977 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:184977
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。
サポート期間が終了した「サポート技術情報」資料に関する免責事項
この資料は、マイクロソフトでサポートされていない製品について記述したものです。そのため、この資料は現状ベースで提供されており、今後更新されることはありません。

フィードバック

 

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