Interaction.GetObject(String, String) Metoda

Definicja

Zwraca odwołanie do obiektu dostarczonego przez składnik COM.

public static object GetObject(string PathName = default, string Class = default);
static member GetObject : string * string -> obj
Public Function GetObject (Optional PathName As String = Nothing, Optional Class As String = Nothing) As Object

Parametry

PathName
String

Optional. String. Pełna ścieżka i nazwa pliku zawierającego obiekt do pobrania. Jeśli PathName zostanie pominięty, Class jest wymagane.

Class
String

Wymagane, jeśli PathName nie podano. String. Ciąg reprezentujący klasę obiektu. Argument Class ma następującą składnię i części:

appname.objecttype

[1|1] Parametr

[1|2] Opis

[2|1] appname

[2|2] Wymagane. String. Nazwa aplikacji udostępniającej obiekt.

[3|1] objecttype

[3|2] Wymagane. String. Typ lub klasa obiektu do utworzenia.

Zwraca

Odwołanie do obiektu dostarczonego przez składnik COM.

Wyjątki

Nie istnieje żaden obiekt określonego typu klasy.

Nie istnieje żaden obiekt o określonej ścieżce i nazwie pliku.

Przykłady

W poniższym przykładzie użyto funkcji GetObject w celu uzyskania odwołania do określonego arkusza Microsoft Excel (excelObj). Używa właściwości Application arkusza, aby Excel widoczne, zamykać je i wykonywać inne akcje. Przy użyciu dwóch wywołań interfejsu API procedura detectExcel szuka Excel, a jeśli jest uruchomiona, wprowadza ją w tabeli Running Object (Uruchamianie obiektu). Pierwsze wywołanie polecenia GetObject powoduje błąd, jeśli Excel nie jest jeszcze uruchomiony, co w tym przykładzie powoduje ustawienie flagi excelWasNotRunning na True. Drugie wywołanie GetObject określa plik do otwarcia. Jeśli Excel nie jest jeszcze uruchomione, drugie wywołanie uruchamia je i zwraca odwołanie do arkusza reprezentowanego przez określony plik, test.xls. Plik musi istnieć w określonej lokalizacji; w przeciwnym razie Visual Basic zgłasza FileNotFoundException. Następnie przykładowy kod powoduje, że zarówno program Excel, jak i okno zawierające określony arkusz są widoczne.

Ten przykład wymaga Option Strict Off , ponieważ używa opóźnionego powiązania, w którym obiekty są przypisywane do zmiennych typu Object. Można określić i zadeklarować obiekty określonych typów obiektów, jeśli dodasz odwołanie do biblioteki typów Excel z COM kartę Dodaj odwołanie okno dialogowe 3>Project

' Add Option Strict Off to the top of your program.
Option Strict Off
' Test to see if a copy of Excel is already running.
Private Sub testExcelRunning()
    On Error Resume Next
    ' GetObject called without the first argument returns a
    ' reference to an instance of the application. If the
    ' application is not already running, an error occurs.
    Dim excelObj As Object = GetObject(, "Excel.Application")
    If Err.Number = 0 Then
        MsgBox("Excel is running")
    Else
        MsgBox("Excel is not running")
    End If
    Err.Clear()
    excelObj = Nothing
End Sub
Private Sub getExcel()
    Dim fileName As String = "c:\vb\test.xls"

    If Not My.Computer.FileSystem.FileExists(fileName) Then
        MsgBox(fileName & " does not exist")
        Exit Sub
    End If

    ' Set the object variable to refer to the file you want to use.
    Dim excelObj As Object = GetObject(fileName)
    ' Show Excel through its Application property. 
    excelObj.Application.Visible = True
    ' Show the window containing the file.
    Dim winCount As Integer = excelObj.Parent.Windows.Count()
    excelObj.Parent.Windows(winCount).Visible = True

    ' Insert additional code to manipulate the test.xls file here.
    ' ...

    excelObj = Nothing
End Sub

Po wywołaniu funkcji getExcel zostanie wykonane sprawdzenie, czy Excel jest już uruchomiona. Jeśli tak nie jest, zostanie utworzone wystąpienie.

Important

Dla uproszczenia w poprzednim przykładzie przyjęto założenie, że każde okno o nazwie XLMAIN należy do wystąpienia Microsoft Excel. Jeśli inny obiekt, prawdopodobnie uruchomiony przez nielegalne manipulowanie, utworzył okno o tej nazwie, otrzyma wszystkie wiadomości przeznaczone do Excel. W aplikacji do użycia w środowisku produkcyjnym należy uwzględnić bardziej rygorystyczne testy, aby sprawdzić, czy XLMAIN naprawdę należy do Excel.

Uwagi

GetObject Użyj funkcji, aby załadować wystąpienie składnika COM z pliku. Ilustruje to przykład poniżej.

Dim CADObject As Object
CADObject = GetObject("C:\CAD\schema.cad")

Po uruchomieniu tego kodu zostanie uruchomiona aplikacja skojarzona z określonym PathName plikiem, a obiekt w określonym pliku zostanie aktywowany.

Przypadki domyślne

Jeśli PathName jest ciągiem o zerowej długości (""), GetObject zwraca nowe wystąpienie obiektu określonego typu klasy. PathName Jeśli argument zostanie pominięty, GetObject zwraca obecnie aktywny obiekt typu klasy określonej w .Class Jeśli nie istnieje żaden obiekt określonego typu, występuje błąd.

Uzyskiwanie dostępu do podobiektu

Niektóre aplikacje umożliwiają aktywowanie podobiektu skojarzonego z plikiem. W tym celu dodaj wykrzyknik (!) na końcu nazwy pliku i postępuj zgodnie z ciągiem identyfikującym część pliku, którą chcesz aktywować. Aby uzyskać informacje na temat tworzenia tego ciągu, zapoznaj się z dokumentacją aplikacji, która utworzyła obiekt.

Na przykład w aplikacji rysunkowej możesz mieć wiele warstw do rysunku przechowywanego w pliku. Możesz użyć następującego kodu, aby aktywować warstwę na rysunku o nazwie schema.cad.

layerObject = GetObject("C:\CAD\schema.cad!Layer3")

Określanie klasy

Jeśli nie określisz obiektu Class, usługa Automation określi aplikację do uruchomienia, a obiekt do aktywowania, na podstawie podanej nazwy pliku. Niektóre pliki mogą jednak obsługiwać więcej niż jedną klasę obiektu. Na przykład rysunek może obsługiwać trzy różne typy obiektów: Application obiekt, Drawing obiekt i Toolbar obiekt, z których wszystkie są częścią tego samego pliku. Aby określić obiekt w pliku, który chcesz aktywować, użyj opcjonalnego Class argumentu. Ilustruje to przykład poniżej.

Dim drawObj As Object
drawObj = GetObject("C:\Drawings\sample.drw", "Figment.Drawing")

W poprzednim przykładzie Figment jest nazwą aplikacji rysunkowej i Drawing jest jednym z typów obiektów, które obsługuje.

Korzystanie z obiektu

Po aktywowaniu obiektu odwołujesz się do niego w kodzie przy użyciu zadeklarowanej zmiennej obiektu. W poprzednim przykładzie uzyskujesz dostęp do właściwości i metod nowego obiektu przy użyciu zmiennej drawObjobiektu . Ilustruje to przykład poniżej.

drawObj.Line(9, 90)
drawObj.InsertText(9, 100, "Hello, world.")
drawObj.SaveAs("C:\Drawings\sample.drw")

Note

GetObject Użyj funkcji, gdy istnieje bieżące wystąpienie obiektu lub jeśli chcesz utworzyć obiekt z załadowanym plikiem. Jeśli nie ma bieżącego wystąpienia i nie chcesz, aby obiekt został uruchomiony z załadowanym plikiem, użyj CreateObject funkcji .

Jeśli obiekt zarejestrował się jako obiekt pojedynczego wystąpienia ActiveX, tworzone jest tylko jedno wystąpienie obiektu, niezależnie od tego, ile razy CreateObject jest wywoływana. W przypadku obiektu GetObject pojedynczego wystąpienia zawsze zwraca to samo wystąpienie, gdy jest wywoływane ze składnią ciągu o zerowej długości ("") i powoduje błąd, jeśli PathName argument zostanie pominięty. Nie można użyć GetObject, aby uzyskać odwołanie do klasy utworzonej przy użyciu Visual Basic.

Important

Funkcja GetObject wymaga niezarządzanych uprawnień kodu, co może mieć wpływ na jego wykonywanie w sytuacjach częściowego zaufania. Aby uzyskać więcej informacji, zobacz SecurityPermission i Uprawnienia dostępu do kodu.

Dotyczy

Zobacz też