Interaction.GetObject(String, String) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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.