Jak wywołać zestaw programu Visual Basic .NET lub Visual Basic 2005 z programu Visual Basic 6.0

Tłumaczenia artykułów Tłumaczenia artykułów
Numer ID artykułu: 817248 - Zobacz jakich produktów dotyczą zawarte w tym artykule porady.
Rozwiń wszystko | Zwiń wszystko

Na tej stronie

WPROWADZENIE

W tym artykule opisano sposób korzystania z programu Microsoft Visual Basic .NET lub Microsoft Visual Basic 2005 w celu skonstruowania zarządzanego zestawu, który będzie można wywoływać z programu Microsoft Visual Basic 6.0.

Więcej informacji

Wskazówki dotyczące udostępniania typów .NET aplikacjom modelu COM

Aby uwidocznić typy zestawu systemu Microsoft .NET aplikacjom modelu COM (Component Object Model), podczas projektowania zestawu należy uwzględnić następujące wymagania międzyoperacyjne modelu COM. Typy zarządzane (class, interface, struct, enum i inne) doskonale współdziałają z aplikacjami klienckimi modelu COM, jeśli przestrzega się następujących zasad:
  • Zdefiniowane interfejsy należy implementować w klasach w sposób jawny. Zestaw międzyoperacyjny modelu COM udostępnia mechanizm automatycznego generowania interfejsu zawierającego wszystkie składowe klasy i składowe jego klasy podstawowej. Najlepiej jest jednak uwidocznić jawne interfejsy i zaimplementować je w sposób jawny.
  • Wszystkie typy zarządzane, które mają być udostępnione modelowi COM, należy deklarować jako typy publiczne. Tylko typy publiczne zestawu są rejestrowane i eksportowane do biblioteki typów. W związku z tym tylko typy publiczne są widoczne w modelu COM.
  • Wszystkie składowe typów (metody, właściwości, pola i zdarzenia), które mają być udostępnione modelowi COM, należy deklarować jako publiczne. Składowe typów publicznych muszą być także publiczne, aby były widoczne w modelu COM. Domyślnie widoczne są wszystkie typy i składowe publiczne. Aby ukryć typ lub składową typu sterowania lub widoczność składowej w aplikacjach klienckich modelu COM, można użyć atrybutu ComVisibleAttribute.
  • Typy, których wystąpienie będzie tworzone przez model COM, muszą mieć domyślnego konstruktora publicznego. Zarządzane typy publiczne są widoczne w modelu COM. Jeśli jednak brakuje domyślnego konstruktora publicznego (konstruktora bez argumentów), klienci modelu COM nie mogą utworzyć wystąpienia typu. Mimo to mogą używać typu, jeśli jego wystąpienie zostanie utworzone w inny sposób, a następnie zwrócone do klienta modelu COM. Jest możliwe dołączenie przeładowanych konstruktorów, którzy akceptują różne argumenty dla tych typów. Konstruktorzy akceptujący argumenty mogą być jednak wywoływani tylko z kodu zarządzanego (.NET).
  • Typy abstrakcyjne są niedostępne. Wystąpień typów abstrakcyjnych nie mogą tworzyć ani klienci modelu COM, ani klienci systemu .NET.
  • Użyj szablonu COMClass w programie Visual Basic .NET lub Visual Basic 2005. Podczas dodawania nowej klasy, która będzie udostępniana aplikacjom modelu COM należy rozważyć użycie szablonu COMClass, który jest dostarczany z programem Visual Basic .NET lub Visual Basic 2005. Szablon COMClass tworzy klasę zawierającą atrybut COMClassAttribute i generuje identyfikatory GUID dla identyfikatora klasy (CLSID), identyfikatora interfejsu i identyfikatora zdarzenia, które są udostępniane przez dany typ. Szablon COMClass tworzy również konstruktora publicznego bez parametrów. To najprostszy sposób utworzenia nowej klasy, która jest zgodna z zasadami tworzenia typów wywołalnych z modelu COM.

Rejestrowanie zestawu .NET spełniającego wymagania międzyoperacyjne modelu COM i utworzenie biblioteki typów

Warunkiem skutecznej interakcji programu Visual Basic 6.0 z zarządzanym składnikiem jest zarejestrowanie zestawu spełniającego wymagania międzyoperacyjne modelu COM i wygenerowanie biblioteki typów. Rejestracja ta musi zostać wykonana na każdym komputerze, na którym zachodzi interakcja między aplikacją kliencką modelu COM a zestawem. Z biblioteki typów aplikacje klienckie modelu COM mogą czerpać informacje o typach udostępnionych w zestawie. Proces, jak należy to robić, zależy od tego, czy pracuje się na komputerze projektowym czy docelowym.

Na komputerze projektowym program Microsoft Visual Studio .NET lub Microsoft Visual Studio 2005 automatycznie tworzy i rejestruje bibliotekę typów w trakcie procesu kompilacji, jeśli w obszarze właściwości Configuration procesu jest zaznaczone pole wyboru Register for COM Interop. Jeśli klasa została utworzona przy użyciu szablonu COMClass, program Visual Studio .NET lub Visual Studio 2005 automatycznie zaznacza pole wyboru Register for COM Interop. Aby zweryfikować, że pole wyboru Register for COM Interop jest zaznaczone w programie Visual Studio .NET lub Visual Studio 2005, wykonaj następujące kroki:
  1. Uruchom program Visual Studio .NET lub Visual Studio 2005.
  2. Otwórz rozwiązanie zawierające kompilowany projekt, który ma spełniać wymagania międzyoperacyjne modelu COM.
  3. W menu View (Widok) kliknij polecenie Solution Explorer.
  4. W oknie Solution Explorer kliknij prawym przyciskiem myszy projekt, który chcesz skompilować, tak aby spełniał wymagania międzyoperacyjne modelu COM, a następnie kliknij polecenie Properties (Właściwości).
  5. Kliknij węzeł Configuration Properties (Właściwości konfiguracji), a następnie kliknij węzeł Build.

    Uwaga: W programie Visual Studio 2005 kliknij pozycję Compile (Skompiluj) w lewym okienku.
  6. Kliknij pole wyboru Register for COM Interop, aby je zaznaczyć. Opcja ta jest aktywna tylko w projektach bibliotek klas.
  7. Kliknij przycisk OK, aby zamknąć okno dialogowe Property Pages (Strony właściwości).
Jeśli program Visual Studio .NET lub Visual Studio 2005 nie jest zainstalowany lub musisz ręcznie wygenerować i zarejestrować plik biblioteki typów (tlb) dla zarządzanego zestawu, użyj narzędzia Assembly Registration (RegAsm.exe) z przełącznikiem /TLB. Jeśli zarządzany zestaw jest zestawem prywatnym i zamierzasz umieścić zarządzany zestaw w innym folderze niż proces hosta (EXE), należy również użyć przełącznika /Codebase.

Zestaw prywatny jest rozmieszczany razem z aplikacją i może być wykorzystywany wyłącznie przez tę aplikację. Inne aplikacje nie mogą współużytkować zestawu prywatnego. Zestawy prywatne są przeznaczone do instalowania w tym samym folderze co proces hosta (EXE). W przypadku aplikacji klienckiej modelu COM oznacza to, że zestaw znajduje się w tym samym folderze co aplikacja. Zestaw udostępniony może być używany przez wiele aplikacji na komputerze. Aby utworzyć zestaw udostępniony, musisz podpisać go silną nazwą i zainstalować w buforze GAC (Global Assembly Cache) na komputerze docelowym.

Aby uzyskać więcej informacji dotyczących podpisywania zestawu silną nazwą i instalowania go w buforze GAC (Global Assembly Cache), odwiedź następującą witrynę firmy Microsoft w sieci Web:
http://msdn2.microsoft.com/en-us/library/xc31ft41(vs.71).aspx
Podczas rejestrowania zestawu należy użyć zarówno przełącznika /tlb:, jak i /Codebase. Przełącznik /tlb: generuje i rejestruje bibliotekę typów, a przełącznik /Codebase rejestruje lokalizację zestawu zarządzanego w rejestrze systemu Windows. Jeśli przełącznik /Codebase nie zostanie użyty i zestaw nie zostanie zainstalowany w buforze Global Assembly Cache (GAC), należy umieścić kopię zestawu w folderach wszystkich aplikacji klienckich modelu COM (EXE), aby umożliwić lokalizację zestawu przez aparat plików wykonywalnych języka wspólnego (CLR).

Aby wygenerować i zarejestrować bibliotekę typów i zarejestrować lokalizację zestawu zarządzanego, wpisz następujące polecenie w wierszu polecenia:
Regasm nazwa_zestawu.dll /tlb: nazwa_pliku.tlb /codebase

Tworzenie zestawu wywoływalnego przez model COM w programie Visual Basic .NET

  1. Uruchom program Visual Studio .NET lub Visual Studio 2005.
  2. W menu File (Plik) wskaż polecenie New (Nowy) a następnie kliknij pozycję Project (Projekt).
  3. W obszarze Project Types (Typy projektów) kliknij opcję Visual Basic Projects.

    Uwaga: W programie Visual Studio 2005 kliknij pozycję Visual Basic w obszarze Project Types (Typy projektów).
  4. W obszarze Templates (Szablony) kliknij opcję Class Library.
  5. Nadaj projektowi nazwę TestProj, a następnie kliknij przycisk OK.

    Domyślnie zostanie utworzona klasa Class1.
  6. W menu View (Widok) kliknij polecenie Solution Explorer.
  7. Kliknij prawym przyciskiem myszy pozycję Class1.vb, a następnie kliknij polecenie Delete (Usuń). Kliknij przycisk OK, aby potwierdzić polecenie usunięcia pliku źródłowego Class1.vb.
  8. W menu Project (Projekt) kliknij polecenie Add Class (Dodaj klasę).
  9. W obszarze Templates (Szablony) kliknij opcję COM Class (Klasa COM).
  10. Nadaj klasie nazwę COMClass1.vb, a następnie kliknij przycisk Open (Otwórz).

    Klasa COMClass1 zostanie utworzona z następującym kodem.
    <ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)> _
    Public Class ComClass1
    
    #Region "COM GUIDs"
        ' Te identyfikatory GUID określają tożsamość modelu COM dla tej klasy
        ' i jego interfejsów COM. Jeśli je zmienisz, istniejący 
        ' klienci utracą możliwość dostępu do klasy.
        Public Const ClassId As String = "6DB79AF2-F661-44AC-8458-62B06BFDD9E4"
        Public Const InterfaceId As String = "EDED909C-9271-4670-BA32-109AE917B1D7"
        Public Const EventsId As String = "17C731B8-CE61-4B5F-B114-10F3E46153AC"
    #End Region
    
        ' Możliwa do utworzenia klasa COM musi mieć instrukcję Public Sub New()
        ' bez parametrów. W przeciwnym razie klasa nie będzie 
        ' zarejestrowana w rejestrze COM i nie będzie jej można utworzyć 
        ' poleceniem CreateObject.
        Public Sub New()
            MyBase.New()
        End Sub
    
    End Class
  11. Dodaj następującą funkcję do klasy COMClass1:
       Public Function myFunction() As Integer
          Return 100
       End Function
  12. W oknie Solution Explorer kliknij prawym przyciskiem myszy projekt nazwa_projektu, a następnie kliknij polecenie Properties.
  13. W obszarze Configuration Properties kliknij przycisk Build.
  14. Zweryfikuj, czy jest zaznaczone pole wyboru Register for COM Interop, a następnie kliknij przycisk OK.
  15. W menu Build kliknij polecenie Build Solution, aby skompilować projekt.
  16. Uruchom program Visual Basic 6.0.
  17. W menu File kliknij polecenie New Project, a następnie kliknij, aby wybrać opcję Standard EXE w oknie dialogowym New Project.

    Zostanie utworzony formularz o domyślnej nazwie Form1.
  18. W menu Project kliknij polecenie References.
  19. Na liście Available References (Dostępne odwołania) kliknij dwukrotnie pozycję TestProj, aby ją zaznaczyć, a następnie kliknij przycisk OK.
  20. Dodaj do formularza przycisk polecenia.
  21. Kliknij dwukrotnie przycisk Command1, aby otworzyć okno kodu.
  22. Do zdarzenia Command1_Click dodaj następujący kod.
    Dim myObject As TestProj.COMClass1
    Set myObject = New TestProj.COMClass1
    MsgBox myObject.myFunction
  23. W menu Run kliknij polecenie Start.
  24. Kliknij przycisk polecenia.

    Powinien pojawić się komunikat wyświetlający liczbę 100.

Materiały referencyjne

Aby uzyskać więcej informacji, odwiedź następującą witrynę firmy Microsoft w sieci Web:
Interoperating with unmanaged code
http://msdn.microsoft.com/library/en-us/cpguide/html/cpconinteroperatingwithunmanagedcode.asp

Właściwości

Numer ID artykułu: 817248 - Ostatnia weryfikacja: 3 grudnia 2007 - Weryfikacja: 6.8
Informacje zawarte w tym artykule dotyczą:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic 6.0 Enterprise Edition
  • Microsoft Visual Basic 6.0 Learning Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft .NET Framework 2.0
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
Słowa kluczowe: 
kbhowtomaster kbinterop kbnamespace kbdll kbautomation kbcominterop kbvs2005applies kbvs2005swept KB817248

Przekaż opinię

 

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