Makale numarası: 194873 - Son Gözden Geçirme: 02 Haziran 2005 Perşembe - Gözden geçirme: 5.0

Bir Visual Basic ActiveX DLL DOSYASı, Visual C++ 6.0 yürütülebilir dosyası ' erişmek için

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.

Bu Sayfada

Hepsini aç | Hepsini kapa

Özet

Bu makalede, yürütülebilir bir Visual Basic ActiveX DLL DOSYASı, Visual C++ 6.0 erişmek için üç yolu gösterilmektedir.

Daha fazla bilgi

Bu makalede, Visual C++ istemcileri için Visual Basic ActiveX bileşenlerini oluşturmak için bir giriş temsil eder. Visual C++ ile usta iseniz başvuru bölümüne daha gelişmiş konular listesini başvurmak isteyebilirsiniz.

Adımları Visual Basic sunucu oluşturmak için



  1. Bir Visual Basic ActiveX DLL DOSYASı projesi oluşturun. Class1, varsayılan olarak oluşturulur.
  2. Class1 için aşağıdaki kodu ekleyin:
          Public Function MyVBFunction(x As Integer) As Integer
             MsgBox x
          End Function
    						
  3. DLL olarak c:\Project1.dll derlemek ve Visual Basic çıkın.
Yöntem 1 - CreateDispatch:

  1. Visual C++'ı başlatın ve Dosya menüsünden Yeni'yi seçin. MFC AppWizard (Exe) ve bir proje adı seçip, Tamam'ı tıklatın. Ne zaman iletişim kutusu görüntülenirse, MFC AppWizard, Son'u tıklatın. Sonraki iletişim kutusunda Tamam'ı tıklatın.
  2. Görünüm menüsünde ClassWizard seçin, sınıf adı kutusuna Ctst1App'i seçin ve InitInstance <a0>iletiler</a0> kutusunda çift tıklatın. Kodu için BOOL CTst1App::InitInstance() getirmek için satırı bulun kod tıklatın AfxEnableControlContainer(); ve önce aşağıdaki satırı ekleyin:
          AfxOleInit();
  3. Görünüm menüsünden ClassWizard seçin ve otomasyon sekmesini tıklatarak AddClass'ı tıklatın ve sonra da TypeLibrary "'ı" seçin. Belirttiğiniz Project1.dll, adım 3'te oluşturulan Visual Basic DLL. Sınıfları Onayla iletişim kutusu görüntülendiğinde, Tamam'ı tıklatın. Yeniden MFC kapatmak için Tamam'ı tıklatın ClassWizard iletişim kutusu.
  4. <Uyg Adı >.cpp dosyasını ve satır ekleme # "Project1.h" içerir. Project1.dll erişen bir kod olan her yerde Project1.h eklemek gerekir.
  5. ClassWizard yeniden açın. Ileti eşlemeleri sekmesinde CAboutDlg sınıf adı kutusuna IDOK <a0>nesne kimliği</a0> kutusunda seçin ve ve BN_CLICKED</a5>'ni çift tıklatın. Tamam, yanıt iletişim kutusu ve yeniden ClassWizard kapatmak için Tamam'ı tıklatın.
  6. Açık < Uyg Adı >.cpp, theCAboutDlg::OnOK() için en altına gidin ve bunu aşağıdaki kodla değiştirin:
          void CAboutDlg::OnOK()
          {
    
          short st = 2;
          short st1;
          _Class1 p;
          p.CreateDispatch("Project1.Class1");
          st1 = p.MyVBFunction(&amp;st);
          CDialog::OnOK();
          }
    						
  7. .Exe dosyası (F7) derleyin.
  8. .Exe dosyasını çalıştırın ve Yardım menüsünden hakkında'ni seçin. Tamam hakkında kutusunda tıklatın ve project1.dll içinde belirtilen ileti kutusu görünür. Iletişim kutusunu kapatmak için Kapat düğmesini tıklatın.
Yöntem 2 - #IMPORT:

  1. Visual C++ 6.0 başlatmak ve bir Win32 konsolu oluşturma uygulama. "Bir boş proje" seçin ve sonra Finish'i (son) tıklatın.
  2. Proje için yeni bir C++ kaynak dosyası eklemek için Yeni'yi tıklatın ve Proje menüsünde Proje Ekle işaretleyin. Yeni kaynak dosyasında aşağıdaki kodu yapıştırın ve kaydedebilirsiniz:
          #include <stdio.h>
    
          // This is the path for your DLL.
          // Make sure that you specify the exact path.
    
          #import "c:\project1.dll"  no_namespace
    
          void main()
          {
           BSTR bstrDesc;
    
          try
          {
          CoInitialize(NULL);
          short st = 2;
           short st1;
          // Declare the Interface Pointer for your Visual Basic object. Here,
          // _Class1Ptr is the Smart pointer wrapper class representing the
          // default interface of the Visual Basic object.
    
          _Class1Ptr ptr;
          // Create an instance of your Visual Basic object, here
          // __uuidof(Class1) gets the CLSID of your Visual Basic object.
    
           ptr.CreateInstance(__uuidof(Class1));
           st1 = ptr->MyVBFunction(&st);
          }
          catch(_com_error &e)
          {
           bstrDesc = e.Description();
    
          }
          CoUninitialize();
          }
    						
  3. Derleyip projeyi çalıştırın. Project1.DLL gelen ileti kutusu görünür.
Alma yöntemi bir Win32 uygulaması veya bir konsol uygulaması veya MFC de kullanılabilir.

Yöntem 3 - yalnızca COM arabirimi

  1. Visual C++'ı başlatın ve Dosya menüsünden Yeni'yi seçin. MFC AppWizard seçin (Exe) proje tst1 adlandırın ve Tamam'ı tıklatın. Zaman MFC Appwizard iletişim kutusu görüntülenir, iletişim based seçin ve Son'u tıklatın. Sonraki iletişim kutusu görüntülendiğinde, Tamam'ı tıklatın.
  2. Kaynak Düzenleyici, varsayılan olarak başlatılır. Iletişim kutusundaki tüm denetimleri silmek ve bir komut düğmesini <a0></a0> üzerinde varsayılan resim yazısı'nı "Button1" koruyarak ekleyin.
  3. Üye Ekle işlevini görüntülenecek Button1 çift iletişim kutusu. OnButton1 adı kabul etmek için Tamam'ı tıklatın.
  4. OLE/COM nesnesi Görüntüleyicisi Araçlar menüsünden Seçenekler'i tıklatın. <a0>Dosya</a0> menüsünden seçin görünüm Tür kitaplığı yarattığınız Project1.dll seçin. DLL dosyanızın .idl dosyasını içeren ıtypelib görüntüleyiciyi görüntülemek için Aç'ı tıklatın.
  5. (Içeriği sağ bölmede) .idl dosyasının içeriğini Pano'ya kopyalar. Disk belleği veya ilk karakteri bölmesindeki metnin sonuna kaydırma sırasında üst karakter tuşunu basılı tutun. Işaretli metni Pano'ya kopyalamak için CTRL + C tuşlarına basın.
  6. Visual C++ Dosya menüsünden Yeni'yi tıklatın. Yeni iletişim kutusunda, <a1>Ad</a1> dosya test1.idl, metin dosyası seçin ve Tamam'ı tıklatın.
  7. Boş bir metin dosyası olarak görünür. Panodan verileri içine yapıştırın ve dosyayı kaydedin.
  8. Proje menüsünden Ayarlar'ı seçin, tst1 ve kaynak dosyaları Ağaç düğümlerini genişletmek ve test1.idl seçin. MIDL sekmesini test1.h "Çıkış üstbilgi dosyası adı" kutusuna girin ve Tamam'ı tıklatın.
  9. Tst1Dlg.cpp açın ve aşağıdaki dosyaları ekleme bölüm içerir:
          #include <initguid.h>
          #include "test1.h"
    						
  10. Görünüm menüsünde ClassWizard'ı tıklatın, Ctst1App sınıf adı kutusunda seçin ve <a0>iletiler</a0> kutusundaki InitInstance'ı çift tıklatın. Kod kodunu getirmek için Düzenle'yi tıklatın:
          BOOL CTst1App::InitInstance()
    						
    satırı bulun:
          AfxEnableControlContainer();
    						
    önce aşağıdaki satırı ekleyin:
          AfxOleInit();
    						
  11. ClassWizard yeniden açın. Ileti eşlemeleri sekmesinde CTst1Dlg sınıf adı kutusuna, IDC_BUTTON1 <a0>nesne kimliği</a0> kutusunda seçin. <a0>Iletiler</a0> kutusundaki BN_CLICKED'ı çift tıklatın ve kodu kodu için void CTst1Dlg::OnButton1() getirmek için Düzenle'yi tıklatın. OnButton1() işlevi aşağıdaki kodla değiştirin:
          void CTst1Dlg::OnButton1()
          {
             // TODO: Add your control notification handler code here.
    
             _Class1 *pClass = NULL;
             IUnknown *pUnk = NULL;
    
          //   HRESULT hr = CoCreateInstance(CLSID_Class1,NULL,
          //   CLSCTX_INPROC_SERVER,IID__Class1,(void **)&pClass);
          //   You can directly get the Interface ID as in the previous line or
          //   you can do a QueryInterface on IUnknown to get the IID
          //   as in the following three lines:
    
          HRESULT hr = CoCreateInstance(CLSID_Class1,NULL,CLSCTX_INPROC_SERVER,
          IID_IUnknown,(void **)&pUnk);
          hr = pUnk->QueryInterface(IID__Class1,(void **)&pClass);
          pUnk->Release();
    
          // Once you have the IID, you can make use of the interface pointer
          // to access our Visual Basic DLL.
    
          short st = 2;
          short st1;
          hr = pClass->MyVBFunction(&st,&st1);
          pClass->Release();
    
          }
    						
  12. .Exe dosyası (F7) derleme ve uygulamanızı (F5). Iletişim kutusunda button1 Ek Yardım düğmesini tıklatın. Visual Basic DLL'nden ileti kutusu görünür.

Referanslar

Ek bilgi için lütfen aşağıdaki Microsoft Knowledge Base'deki makaleleri bakın:
178749  (http://support.microsoft.com/kb/178749/EN-US/ ) MFC ve bir tür kitaplığı'nı kullanarak bir Otomasyon Proje oluşturma

188817  (http://support.microsoft.com/kb/188817/EN-US/ ) VC ++ MFC istemci ComCallingJava örnek için nasıl

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 6.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition
  • Microsoft Visual C++ 6.0 Professional Edition
  • Microsoft Visual C++, 32-bit Learning Edition 6.0
Anahtar Kelimeler: 
kbmt kbinfo kbcode kbhowto KB194873 KbMttr
Otomatik TercümeOtomatik Tercüme
Ö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:194873  (http://support.microsoft.com/kb/194873/en-us/ )