Interaction.GetObject(String, String) Methode

Definition

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

Object

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.

Gilt für:

Siehe auch