Düzeltme: MFC VBScript'te ScriptControl Reports geçersiz dili

Makale çevirileri Makale çevirileri
Makale numarası: 184977 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Belirtiler

Bir MFC uygulaması ScriptControl nesnesinde ev sahipliği yapan, aşağıdaki hata iletisini alabilirsiniz:
Geçerli bir dil için komut dosyası alt yapısı başlatılmadı olduğundan işlem tamamlanamadı.
Önceden dilini VBScript için SetLanguage yöntemini kullanarak ayarlayabilirsiniz olsa bile bu oluşur. JScript veya JavaScript gibi dil ScriptControl nesne için belirtirseniz, bu hata oluşmaz.

Neden

Bir denetim olarak (ve yalnızca basit bir Otomasyon nesnesi olarak), belirtilen dili VBScript'tir, kendini düzgün şekilde başlatılmaya ScriptControl nesne başarısız olur.

Çözüm

Iki geçici çözüm aşağıda verilmiştir:
  • Ayarlamadan önce dili temizleyin:

    Sağa ScriptControl::SetLanguage("VBScript") çağırmadan önce bir ça?r? ScriptControl::SetLanguage(NULL) ekleyin.
  • ScriptControl nesne otomatikleştirme:

    Alternatif olarak, the ScriptControl kullanan uygulamalar full-blown bir denetim olarak değil, yalnızca bir Otomasyon nesnesi olarak komut dosyası denetimi otomatikleştirmek için geçiş yapabilirsiniz. Bu, bu makalede yan? s?ra tarafından geliştir performans belirtilen hata çözme avantajı vardır. Istemci uygulaması ile ActiveX yükü gitmek gerekli olmayan-UI komut dosyası denetimi için temelde gereksiz olan anlaşması, ev sahipliği yapan denetim.
Aşağıda bir örnek kod kullanan Visual C++ 5.0 COM the ScriptControl kolayca Cocreateınstance için destek ve etkinleştirmeniz parçasıdır.

Örnek kod

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

Durum

Microsoft, bunun bu makalenin başında listelenen Microsoft ürünlerinde bir hata olduğunu onaylamıştır. Bu hata, Microsoft ınternet Explorer 5'te giderilmiştir.

Daha fazla bilgi

Davranışı yeniden oluşturma adımları

  1. MFC SDI yeni bir uygulama, AppWizard ayarları, ActiveX denetimleri desteği de dahil olmak üzere varsayılan oluşturun.
  2. ScriptControl "ScriptControl nesnesi" klasöründen "ActiveX denetimi kayıtlı" the Project\Add altında Project\Components ve denetimleri menü maddesine seçerek ekleyin. Izleyen iletişim kutuları bulunan tüm Varsayılanları kabul edin.
  3. Görünüm OnInitialUpdate yönteminde aşağıdaki kodu ekleyin:
    // 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. # Define ID_SCRIPT_CONTROL içinde sizin Resource.h ve bir #'i içerir yeni komut dosyası denetimi sınıf dosyası, Scriptcontrol.h, görünüme ekleyin. Oluşturup uygulamayı çalıştırın.

Referanslar

Ek bilgi için lütfen aşağıdaki article(s) olarak Microsoft Knowledge Base'de bakın:
184904Dosya: MSSCPCTL.EXE kod denetim üstbilgi dosyası MSSCPCTL.H
Ek bilgi için lütfen şu World Wide Web URL bakın:
http://msdn2.microsoft.com/en-us/library/ms950396.aspx

Özellikler

Makale numarası: 184977 - Last Review: 8 Ağustos 2007 Çarşamba - Gözden geçirme: 2.2
Bu makaledeki bilginin uygulandığı durum:
  • Visual Basic, Scripting Edition 3.0
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition
Anahtar Kelimeler: 
kbmt kbbug kbfix kbie500fix KB184977 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:184977
Kullanım Dışı Bilgi Bankası İçeriği Yasal Uyarı
Bu makale, Microsoft'un artık destek sağlamadığı ürünler ile ilgili olarak yazılmıştır. Bu nedenle, bu makale "olduğu gibi" sağlanmıştır ve bundan sonra güncelleştirilmeyecektir.

Geri Bildirim Ver

 

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