Interaction.GetObject(String, String) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt einen Verweis auf ein von einer COM-Komponente bereitgestelltes Objekt zurück.
[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
Parameter
- PathName
- String
Dies ist optional. String. Der vollständige Pfad und Name der Datei, die das abzurufende Objekt enthält. Wenn PathName nicht angegeben wird, ist Class erforderlich.
- Class
- String
Erforderlich, wenn PathName nicht angegeben wird. String. Eine Zeichenfolge, die die Klasse des Objekts darstellt. Das Class-Argument verfügt über folgende Syntax und Bestandteile:
anwendungsname.objekttyp
[1|1] Parameter
[1|2] Beschreibung
[2|1] anwendungsname
[2|2] Erforderlich. String. Der Name der Anwendung, die das Objekt bereitstellt.
[3|1] objekttyp
[3|2] Erforderlich. String. Der Typ oder die Klasse des zu erstellenden Objekts.
Gibt zurück
Ein Verweis auf ein von einer COM-Komponente bereitgestelltes Objekt.
- Attribute
Ausnahmen
Es ist kein Objekt des angegebenen Klassentyps vorhanden.
Es ist kein Objekt mit dem angegebenen Pfad und Dateinamen vorhanden.
Beispiele
Im folgenden Beispiel wird die GetObject Funktion verwendet, um einen Verweis auf ein bestimmtes Microsoft Excel Arbeitsblatt (excelObj) abzurufen. Es verwendet die Eigenschaft des Application Arbeitsblatts, um Excel sichtbar zu machen, es zu schließen und andere Aktionen auszuführen. Wenn Sie zwei API-Aufrufe verwenden, sucht die detectExcel Prozedur nach Excel, und wenn sie ausgeführt wird, wird sie in der Tabelle "Running Object" eingegeben. Der erste Aufruf führt GetObject zu einem Fehler, wenn Excel nicht bereits ausgeführt wird, was in diesem Beispiel dazu führt, dass das excelWasNotRunning Flag auf festgelegt Truewird. Der zweite Aufruf, der GetObject eine zu öffnende Datei angibt. Wenn Excel noch nicht ausgeführt wird, startet der zweite Aufruf es und gibt einen Verweis auf das Arbeitsblatt zurück, das durch die angegebene Datei test.xlsdargestellt wird. Die Datei muss an dem angegebenen Speicherort vorhanden sein; andernfalls löst Visual Basic eine FileNotFoundException. Als Nächstes macht der Beispielcode sowohl Excel als auch das Fenster mit dem angegebenen Arbeitsblatt sichtbar.
In diesem Beispiel ist erforderlich Option Strict Off , weil die späte Bindung verwendet wird, wobei Objekten Variablen des Typs Objectzugewiesen werden. Sie können Objekte bestimmter Objekttypen angeben Option Strict On und deklarieren, wenn Sie einen Verweis auf die Excel Typbibliothek aus der COM-Registerkarte des Dialogfelds "Verweis hinzufügen" des menüs Project in Visual Studio hinzufügen.
' 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
Wenn Sie die getExcel Funktion aufrufen, wird eine Überprüfung vorgenommen, um zu sehen, ob Excel bereits ausgeführt wird. Wenn dies nicht der Fall ist, wird eine Instanz erstellt.
Wichtig
Im vorherigen Beispiel wird davon ausgegangen, dass jedes Fenster, das aufgerufen XLMAIN wird, zu einer Instanz von Microsoft Excel gehört. Wenn ein anderes Objekt, das möglicherweise durch illegale Manipulation gestartet wurde, ein Fenster mit diesem Namen erstellt, würde es alle Nachrichten erhalten, die Sie für Excel vorgesehen haben. In einer Anwendung, die für die Produktion verwendet werden soll, sollten Sie einige strengere Tests einschließen, um zu überprüfen, ob XLMAIN es wirklich zu Excel gehört.
Hinweise
Verwenden Sie die GetObject Funktion, um eine Instanz einer COM-Komponente aus einer Datei zu laden. Dies wird anhand des folgenden Beispiels veranschaulicht.
Dim CADObject As Object
CADObject = GetObject("C:\CAD\schema.cad")
Wenn dieser Code ausgeführt wird, wird die mit der angegebenen PathName Datei verknüpfte Anwendung gestartet und das Objekt in der angegebenen Datei aktiviert.
Standardfälle
Wenn PathName es sich um eine Nulllängenzeichenfolge ("") handelt, GetObject wird eine neue Objektinstanz des angegebenen Klassentyps zurückgegeben. Wenn das PathName Argument nicht angegeben wird, gibt ein aktuell aktives Objekt des klassentyps zurück, GetObject der in Class. Wenn kein Objekt des angegebenen Typs vorhanden ist, tritt ein Fehler auf.
Zugreifen auf ein Unterobjekt
Einige Anwendungen ermöglichen es Ihnen, ein Teilobjekt zu aktivieren, das einer Datei zugeordnet ist. Fügen Sie dazu einen Ausrufezeichen (!) zum Ende des Dateinamens hinzu, und folgen Sie es mit einer Zeichenfolge, die den Teil der Datei identifiziert, die Sie aktivieren möchten. Informationen zum Erstellen dieser Zeichenfolge finden Sie in der Dokumentation für die Anwendung, die das Objekt erstellt hat.
Beispielsweise haben Sie in einer Zeichnungsanwendung möglicherweise mehrere Ebenen für eine Zeichnung, die in einer Datei gespeichert ist. Sie können den folgenden Code verwenden, um eine Ebene in einer Zeichnung namens " schema.cadaktivieren" zu aktivieren.
layerObject = GetObject("C:\CAD\schema.cad!Layer3")
Angeben einer Klasse
Wenn Sie das Objekt Classnicht angeben, bestimmt Automatisierung die Anwendung, die gestartet werden soll, und das Objekt, das aktiviert werden soll, basierend auf dem von Ihnen bereitgestellten Dateinamen. Einige Dateien können jedoch mehrere Objektklassen unterstützen. Beispielsweise kann eine Zeichnung drei verschiedene Arten von Objekten unterstützen: ein Objekt, Drawing ein Objekt und ein Application Toolbar Objekt, die alle Teil derselben Datei sind. Um anzugeben, welches Objekt in einer Datei, die Sie aktivieren möchten, verwenden Sie das optionale Class Argument. Dies wird anhand des folgenden Beispiels veranschaulicht.
Dim drawObj As Object
drawObj = GetObject("C:\Drawings\sample.drw", "Figment.Drawing")
Im vorherigen Beispiel handelt es sich um den Namen einer Zeichnungsanwendung und Drawing ist eine der Objekttypen, Figment die sie unterstützt.
Verwenden des Objekts
Nachdem ein Objekt aktiviert wurde, verweisen Sie im Code auf die objektvariable, die Sie deklariert haben. Im vorherigen Beispiel greifen Sie mithilfe der Objektvariable drawObjauf Eigenschaften und Methoden des neuen Objekts zu. Dies wird anhand des folgenden Beispiels veranschaulicht.
drawObj.Line(9, 90)
drawObj.InsertText(9, 100, "Hello, world.")
drawObj.SaveAs("C:\Drawings\sample.drw")
Hinweis
Verwenden Sie die GetObject Funktion, wenn es eine aktuelle Instanz des Objekts gibt oder wenn Sie das Objekt mit einer geladenen Datei erstellen möchten. Wenn keine aktuelle Instanz vorhanden ist und sie nicht möchten, dass das Objekt mit einer geladenen Datei gestartet wurde, verwenden Sie die CreateObject Funktion.
Wenn ein Objekt sich als ActiveX einzelne Instanzobjekt registriert hat, wird nur eine Instanz des Objekts erstellt, unabhängig davon, wie viele CreateObject Mal aufgerufen wird. Gibt bei einem einzelnen Instanzobjekt GetObject immer die gleiche Instanz zurück, wenn sie mit der Syntax der Nulllängenzeichenfolge ("") aufgerufen wird, und es verursacht einen Fehler, wenn das PathName Argument ausgelassen wird. Sie können keinen GetObject Verweis auf eine Klasse abrufen, die mit Visual Basic erstellt wurde.
Wichtig
Die GetObject Funktion erfordert nicht verwaltete Codeberechtigungen, die sich auf die Ausführung in teilvertrauenswürdigen Situationen auswirken können. Weitere Informationen finden Sie unter SecurityPermission und Codezugriffsberechtigungen.