Udostępnij za pośrednictwem


Interaction.GetObject(String, String) Metoda

Definicja

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

[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static object? GetObject (string? PathName = default, string? Class = default);
public static object GetObject (string PathName = default, string Class = default);
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member GetObject : string * string -> obj
static member GetObject : string * string -> obj
Public Function GetObject (Optional PathName As String = Nothing, Optional Class As String = Nothing) As Object

Parametry

PathName
String

Opcjonalny. String. Pełna ścieżka i nazwa pliku zawierającego obiekt do pobrania. Jeśli PathName pominięto, 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 dostarczają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.

Atrybuty

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 GetObject funkcji w celu uzyskania odwołania do określonego arkusza programu Microsoft Excel (excelObj). Używa właściwości arkusza Application do uwidoczniania programu Excel, zamykania go i wykonywania innych akcji. Przy użyciu dwóch wywołań detectExcel interfejsu API procedura wyszukuje program Excel, a jeśli jest uruchomiona, wprowadza ją w tabeli Running Object (Uruchamianie obiektu). Pierwsze wywołanie GetObject powoduje błąd, jeśli program Excel nie jest jeszcze uruchomiony, co w tym przykładzie powoduje ustawienie flagi excelWasNotRunning na True. Drugie wywołanie określa GetObject plik do otwarcia. Jeśli program Excel nie jest jeszcze uruchomiony, 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 program Visual Basic zgłasza błąd FileNotFoundException. Następnie przykładowy kod sprawia, że program Excel i okno zawierające określony arkusz są widoczne.

Ten przykład wymaga Option Strict Off , ponieważ używa późnego powiązania, gdzie obiekty są przypisywane do zmiennych typu Object. Można określić Option Strict On i zadeklarować obiekty określonych typów obiektów, jeśli dodasz odwołanie do biblioteki typów programu Excel z karty COM okna dialogowego Dodawanie odwołania w menu Projekt w programie Visual Studio.

' 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 getExcel funkcji zostanie wykonane sprawdzenie, czy program Excel jest już uruchomiony. Jeśli tak nie jest, zostanie utworzone wystąpienie.

Ważne

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

Uwagi

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

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ślonego w elemecie Class. Jeśli nie istnieje żaden obiekt określonego typu, wystąpi błąd.

Uzyskiwanie dostępu do podobiektów.

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, zobacz dokumentację aplikacji, która utworzyła obiekt.

Na przykład w aplikacji rysunkowej może istnieć 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śla 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 poniższy przykład.

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.

Używanie 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 poniższy przykład.

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

Uwaga

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, bez względu na to, 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 polecenia , aby uzyskać odwołanie do klasy utworzonej za pomocą języka Visual Basic.

Ważne

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

Dotyczy

Zobacz też