Freigeben über


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:

appname.objecttype

[1|1] Parameter

[1|2] Beschreibung

[2|1] appname

[2|2] Erforderlich. String. Der Name der Anwendung, die das Objekt bereitstellt.

[3|1] objecttype

[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 Arbeitsblatts Application , um Excel sichtbar zu machen, es zu schließen und andere Aktionen auszuführen. Mithilfe von zwei API-Aufrufen sucht die detectExcel Prozedur nach Excel, und wenn es ausgeführt wird, wird es in die Tabelle Running Object eingegeben. Der erste Aufruf von GetObject verursacht einen Fehler, wenn Excel noch nicht ausgeführt wird. In diesem Beispiel wird das excelWasNotRunning Flag auf Truefestgelegt. Der zweite Aufruf von GetObject gibt eine zu öffnende Datei an. Wenn Excel noch nicht ausgeführt wird, wird es mit dem zweiten Aufruf gestartet und ein Verweis auf das Arbeitsblatt zurückgegeben, test.xlsdas durch die angegebene Datei dargestellt wird. Die Datei muss am angegebenen Speicherort vorhanden sein. Andernfalls löst Visual Basic einen aus FileNotFoundException. Als Nächstes macht der Beispielcode sowohl Excel als auch das Fenster mit dem angegebenen Arbeitsblatt sichtbar.

Dieses Beispiel ist erforderlich Option Strict Off , da es späte Bindung verwendet, bei der Objekte Variablen des Typs Objectzugewiesen werden. Sie können Objekte bestimmter Objekttypen angeben Option Strict On und deklarieren, wenn Sie im Menü Projekt in Visual Studio auf der Registerkarte COM des Dialogfelds Verweis hinzufügen einen Verweis auf die Excel-Typbibliothek 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 überprüft, ob Excel bereits ausgeführt wird. Wenn dies nicht der Fall ist, wird eine Instanz erstellt.

Wichtig

Der Einfachheit halber wird im vorherigen Beispiel davon ausgegangen, dass jedes aufgerufene XLMAIN Fenster zu einer Instanz von Microsoft Excel gehört. Wenn ein anderes Objekt, das möglicherweise durch unerlaubte Manipulation gestartet wurde, ein Fenster mit diesem Namen erstellt hat, erhält es alle Nachrichten, die Sie für Excel vorgesehen haben. In einer Anwendung, die für die Produktion verwendet werden soll, sollten Sie einige strengere Tests durchführen, um zu überprüfen, ob sie XLMAIN 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 dem angegebenen PathName zugeordnete Anwendung gestartet, und das Objekt in der angegebenen Datei wird aktiviert.

Standardfälle

Wenn PathName eine Zeichenfolge der Länge null ist (""), GetObject gibt eine neue Objektinstanz des angegebenen Klassentyps zurück. Wenn das PathName Argument ausgelassen wird, GetObject gibt ein aktuell aktives Objekt des in Classangegebenen Klassentyps zurück. Wenn kein Objekt des angegebenen Typs vorhanden ist, tritt ein Fehler auf.

Zugreifen auf ein Unterobjekt

Bei einigen Anwendungen können Sie ein Teilobjekt aktivieren, das einer Datei zugeordnet ist. Fügen Sie dazu am Ende des Dateinamens ein Ausrufezeichen (!) hinzu, und folgen Sie diesem mit einer Zeichenfolge, die den Teil der Datei identifiziert, den Sie aktivieren möchten. Informationen zum Erstellen dieser Zeichenfolge finden Sie in der Dokumentation für die Anwendung, die das Objekt erstellt hat.

In einer Zeichnungsanwendung können beispielsweise mehrere Ebenen einer Zeichnung in einer Datei gespeichert sein. Sie können den folgenden Code verwenden, um eine Ebene in einer Zeichnung namens schema.cadzu aktivieren.

layerObject = GetObject("C:\CAD\schema.cad!Layer3")  

Angeben einer Klasse

Wenn Sie das Objekt Classnicht angeben, bestimmt Automation basierend auf dem von Ihnen angegebenen Dateinamen die zu startende Anwendung und das zu aktivierende Objekt. Einige Dateien können jedoch mehrere Objektklassen unterstützen. Beispielsweise kann eine Zeichnung drei verschiedene Typen von Objekten unterstützen: ein Application -Objekt, ein Drawing -Objekt und ein Toolbar -Objekt, die alle Teil derselben Datei sind. Verwenden Sie das optionale Class Argument, um anzugeben, welches Objekt in einer Datei aktiviert werden soll. Dies wird anhand des folgenden Beispiels veranschaulicht.

Dim drawObj As Object  
drawObj = GetObject("C:\Drawings\sample.drw", "Figment.Drawing")  

Im vorherigen Beispiel Figment ist der Name einer Zeichnungsanwendung und Drawing einer der von ihr unterstützten Objekttypen.

Verwenden des Objekts

Sobald ein Objekt aktiviert wurde, verweisen Sie im Code auf es mithilfe der von Ihnen deklarierten Objektvariablen. 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 eine aktuelle Instanz des Objekts vorhanden ist oder wenn Sie das Objekt mit geladener 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 sich ein Objekt als ActiveX-Einzelinstanzobjekt registriert hat, wird nur eine Instanz des Objekts erstellt, unabhängig davon, wie oft CreateObject aufgerufen wird. Bei einem Einzelinstanzobjekt gibt immer dieselbe Instanz zurück, GetObject wenn mit der Zeichenfolgensyntax ("") der Länge null aufgerufen wird, und es verursacht einen Fehler, wenn das PathName Argument ausgelassen wird. Sie können nicht verwenden GetObject , um einen Verweis auf eine klasse abzurufen, die mit Visual Basic erstellt wurde.

Wichtig

Die GetObject Funktion erfordert die Berechtigung für nicht verwalteten Code, was sich auf die Ausführung in teilweise vertrauenswürdigen Situationen auswirken kann. Weitere Informationen finden Sie unter SecurityPermission und Codezugriffsberechtigungen.

Gilt für:

Weitere Informationen