GetObject-Funktion (Visual Basic)

Aktualisiert: November 2007

Gibt einen Verweis auf ein von einer COM-Komponente bereitgestelltes Objekt zurück.


Public Function GetObject( _
    Optional ByVal PathName As String = Nothing, _
    Optional ByVal [Class] As String = Nothing _
) As Object

Parameter

Beschreibung

PathName

Optional. String. Der vollständige Pfad und Name der Datei, die das abzurufende Objekt enthält. Wenn PathName weggelassen wird oder einer Zeichenfolge der Länge 0 (null) entspricht (""), ist Class erforderlich.

Class

Erforderlich, wenn PathName nicht angegeben wird. String. Eine Zeichenfolge, die die Klasse des Objekts darstellt. Das Class-Argument weist die folgende Syntax und die folgenden Bestandteile auf:

appname.objecttype

ParameterBeschreibung
appnameErforderlich. String. Der Name der Anwendung, die das Objekt bereitstellt.
objecttypeErforderlich. String. Typ oder Klasse des zu erstellenden Objekts.

Ausnahmetyp

Fehlernummer

Bedingung

Exception

429

Es ist kein Objekt des angegebenen Klassentyps vorhanden.

FileNotFoundException

432

Es ist kein Objekt mit dem angegebenen Pfad und Dateinamen vorhanden.

Beachten Sie die Spalte "Fehlernummer", wenn Sie Visual Basic 6.0-Anwendungen aktualisieren, die eine unstrukturierte Fehlerbehandlung verwenden. (Sie können die Fehlernummer mit der Number-Eigenschaft (Err-Objekt) vergleichen.) Wenn möglich, sollten Sie jedoch erwägen, eine solche Fehlersteuerung durch eine Übersicht über die strukturierte Ausnahmebehandlung für Visual Basic zu ersetzen.

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 in PathName angegebene Anwendung gestartet, und das Objekt wird in der angegebenen Datei aktiviert.

Standardfälle

Ist PathName eine Zeichenfolge mit der Länge 0 (null, ""), gibt GetObject eine neue Objektinstanz des angegebenen Klassentyps zurück. Wird das PathName-Argument nicht angegeben, gibt GetObject ein momentan aktives Objekt des in Class angegebenen Klassentyps zurück. Wenn kein Objekt des angegebenen Typs vorhanden ist, tritt ein Fehler auf.

Zugreifen auf ein Unterobjekt

In manchen Anwendungen können Sie ein einer Datei zugehöriges Unterobjekt aktivieren. Dazu fügen Sie hinter dem Dateinamen ein Ausrufezeichen (!) ein, gefolgt von der Zeichenfolge, die den zu aktivierenden Teil der Datei identifiziert. Weitere Informationen über das Erstellen dieser Zeichenfolge finden Sie in der Dokumentation der Anwendung, mit der das Objekt erstellt wurde.

Möglicherweise haben Sie in einem Zeichenprogramm mehrere Ebenen einer Zeichnung in einer Datei gespeichert. Mit folgendem Code können Sie eine Ebene in einer Zeichnung mit dem Namen schema.cad aktivieren.

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

Angeben einer Klasse

Wenn Sie nicht die Class des Objekts angeben, bestimmt die Automatisierung anhand des von Ihnen angegebenen Dateinamens, welche Anwendung gestartet und welches Objekt aktiviert wird. Einige Dateien können jedoch auch mehrere Objektklassen unterstützen. Eine Zeichnung könnte z. B. drei unterschiedliche Objekttypen unterstützen: Ein Application-Objekt, ein Drawing-Objekt und ein Toolbar-Objekt, die sich alle in derselben Datei befinden. Um anzugeben, welches Objekt in einer Datei aktiviert werden soll, 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 ist Figment der Name des Zeichenprogramms, und Drawing ist einer der vom Programm unterstützten Objekttypen.

Verwenden des Objekts

Sobald ein Objekt aktiviert ist, wird im Code über die deklarierte Objektvariable darauf verwiesen. Im vorherigen Beispiel greifen Sie über die drawObj-Objektvariable auf 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")
e9waz863.alert_note(de-de,VS.90).gifHinweis:

Verwenden Sie die GetObject-Funktion, wenn eine aktuelle Instanz des Objekts vorhanden ist oder Sie das Objekt mit einer geladenen Datei erstellen möchten. Wenn es keine aktuelle Instanz gibt und Sie das Objekt nicht mit einer geladenen Datei starten möchten, verwenden Sie die CreateObject-Funktion (Visual Basic)-Funktion.

Wenn sich ein Objekt als ActiveX-Einzelinstanzobjekt registriert hat, wird nur eine einzige Instanz dieses Objekts erstellt, unabhängig davon, wie oft CreateObject aufgerufen wird. Bei einem Einzelinstanzobjekt gibt GetObject bei einem Aufruf mit einer Zeichenfolge mit der Länge 0 (null, "") stets dieselbe Instanz zurück, und es tritt ein Fehler auf, wenn das PathName-Argument nicht angegeben wird. GetObject kann nicht verwendet werden, um einen Verweis auf eine in Visual Basic erstellte Klasse abzurufen.

e9waz863.alert_security(de-de,VS.90).gifSicherheitshinweis:

Die GetObject-Funktion erfordert eine Berechtigung für nicht verwalteten Code. Dies könnte sich auf ihre Ausführung in teilweise vertrauenswürdigen Kontexten auswirken. Weitere Informationen finden Sie unter SecurityPermission und Codezugriffsberechtigungen.

Wenn Sie mit der Verwendung des Objekts fertig sind, legen Sie alle Verweise auf das Objekt auf Nothing fest. Dadurch kann die Laufzeit die COM-Komponente entfernen.

Im folgenden Beispiel wird mit der GetObject-Funktion bestimmt, ob Excel ausgeführt wird.

' 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


Im folgenden Beispiel wird mit der GetObject-Funktion ein Verweis auf ein bestimmtes Microsoft Excel-Arbeitsblatt (excelObj) abgerufen. Durch Aufrufen von GetObject wird ein Verweis auf das Arbeitsblatt zurückgegeben, das der angegebenen Datei test.xls entspricht. Anschließend werden mit dem Beispielcode sowohl Microsoft Excel als auch das Fenster mit dem angegebenen Arbeitsblatt angezeigt.

In diesem Beispiel ist die Angabe Option Strict Off erforderlich, da die späte Bindung verwendet wird, um Objekte Variablen des Typs Object zuzuweisen. Wenn Sie der Excel-Typbibliothek einen Projektverweis hinzufügen, können Sie Option Strict On angeben und Objekte bestimmter Objekttypen deklarieren. Hierzu öffnen Sie das Dialogfeld Verweis hinzufügen über das Visual Studio-Menü Projekt und wählen die Excel-Typbibliothek auf der Registerkarte COM aus.

' Add Option Strict Off to the top of your program.
Option Strict Off


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


Diese Funktion wird nicht unterstützt.

Namespace:Microsoft.VisualBasic

Modul:Interaction

Assembly:Visual Basic Runtime Library (in Microsoft.VisualBasic.dll)

Community-Beiträge

Anzeigen: