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 drawObj
obiektu . 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.