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 Objekt zurück, das von einer COM-Komponente bereitgestellt wird.
public static object GetObject(string PathName = default, string Class = default);
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, Class ist erforderlich.
- Class
- String
Erforderlich, wenn PathName nicht angegeben.
String. Eine Zeichenfolge, die die Klasse des -Objekts darstellt. Das Class Argument weist die folgende Syntax und Teile auf:
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 objekt, das von einer COM-Komponente bereitgestellt wird.
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 funktion GetObject verwendet, um einen Verweis auf ein bestimmtes Microsoft Excel Arbeitsblatt (excelObj) abzurufen. Es verwendet die Application-Eigenschaft des Arbeitsblatts, um Excel sichtbar zu machen, um es zu schließen und andere Aktionen auszuführen. Bei Verwendung von zwei API-Aufrufen sucht die detectExcel-Prozedur nach Excel, und wenn sie ausgeführt wird, wird sie 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 Flag excelWasNotRunning auf True festgelegt. Der zweite Aufruf, der GetObject eine zu öffnende Datei angibt. Wenn Excel noch nicht ausgeführt wird, wird der zweite Aufruf gestartet und gibt einen Verweis auf das Arbeitsblatt zurück, das durch die angegebene Datei dargestellt wird, test.xls. Die Datei muss am angegebenen Speicherort vorhanden sein; andernfalls löst Visual Basic einen FileNotFoundException aus. Als Nächstes macht der Beispielcode sowohl Excel als auch das Fenster mit dem angegebenen Arbeitsblatt sichtbar.
Dieses Beispiel erfordert Option Strict Off , dass eine späte Bindung verwendet wird, bei der Objekte Variablen vom Typ Objectzugewiesen sind. Sie können Option Strict On angeben und Objekte bestimmter Objekttypen deklarieren, wenn Sie einen Verweis auf die Excel Typbibliothek aus dem Dialogfeld COM der Registerkarte Add Reference des Dialogfelds 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 Funktion getExcel aufrufen, wird überprüft, ob Excel bereits ausgeführt wird. Wenn dies nicht der Fall ist, wird eine Instanz erstellt.
Important
Aus Gründen der Einfachheit geht im vorherigen Beispiel davon aus, dass jedes Fenster, das XLMAIN aufgerufen wird, zu einer Instanz von Microsoft Excel gehört. Wenn ein anderes Objekt, das möglicherweise durch illegale Manipulationen gestartet wurde, ein Fenster mit diesem Namen erstellt, würde es alle Nachrichten empfangen, 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 wirklich zu Excel gehört.
Hinweise
Verwenden Sie die GetObject Funktion, um eine Instanz einer COM-Komponente aus einer Datei zu laden. Das folgende Beispiel illustriert dies.
Dim CADObject As Object
CADObject = GetObject("C:\CAD\schema.cad")
Wenn dieser Code ausgeführt wird, wird die dem angegebenen Code PathName zugeordnete Anwendung gestartet, und das Objekt in der angegebenen Datei wird aktiviert.
Standardfälle
Wenn PathName es sich um eine leere Zeichenfolge ("") handelt, GetObject wird eine neue Objektinstanz des angegebenen Klassentyps zurückgegeben. Wenn das PathName Argument nicht angegeben wird, wird ein aktuell aktives Objekt des klassentyps zurückgegeben, GetObject der in Class. Ist kein Objekt des angegebenen Typs vorhanden, tritt ein Fehler auf.
Zugreifen auf ein Unterobjekt
In 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 ihr mit einer Zeichenfolge, die den Teil der Datei identifiziert, den Sie aktivieren möchten. Informationen dazu, wie diese Zeichenfolge erstellt wird, finden in der Dokumentation für die Anwendung, die das Objekt erstellt hat.
Beispielsweise könnte es in einem CAD-Programm mehrere Ebenen in einer Zeichnung geben, die in einer Datei gespeichert ist. Sie können den folgenden Code verwenden, um eine Ebene innerhalb einer Zeichnung zu aktivieren, die aufgerufen wird schema.cad.
layerObject = GetObject("C:\CAD\schema.cad!Layer3")
Angeben einer Klasse
Wenn Sie das Objekt Classnicht angeben, bestimmt Automation die zu startende Anwendung und das zu aktivierende Objekt basierend auf dem von Ihnen angegebenen Dateinamen. Einige Dateien können jedoch mehrere Objektklassen unterstützen. Eine Zeichnung kann z. B. drei verschiedene Objekttypen unterstützen: ein Application Objekt, ein Drawing Objekt und ein Toolbar Objekt, von denen alle Teil derselben Datei sind. Verwenden Sie das optionale Class Argument, um anzugeben, welches Objekt in einer Datei Sie aktivieren möchten. Das folgende Beispiel illustriert dies.
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 unterstützten Objekttypen.
Verwenden des Objekts
Nachdem ein Objekt aktiviert wurde, verweisen Sie mit der deklarierten Objektvariable im Code darauf. Im vorherigen Beispiel greifen Sie mithilfe der Objektvariablen drawObjauf Eigenschaften und Methoden des neuen Objekts zu. Das folgende Beispiel illustriert dies.
drawObj.Line(9, 90)
drawObj.InsertText(9, 100, "Hello, world.")
drawObj.SaveAs("C:\Drawings\sample.drw")
Note
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 das Objekt nicht mit einer geladenen Datei gestartet werden soll, verwenden Sie die CreateObject Funktion.
Wenn sich ein Objekt selbst als Eininstanzobjekt von ActiveX registriert hat, wird unabhängig davon, wie oft CreateObject nur eine Instanz des Objekts aufgerufen wird, erstellt. Bei einem Einzelinstanzobjekt wird immer dieselbe Instanz zurückgegeben, GetObject wenn sie mit der Syntax der Zeichenfolge (""Null) aufgerufen wird, und es wird ein Fehler verursacht, wenn das PathName Argument nicht angegeben wird. Sie können GetObject nicht verwenden, um einen Verweis auf eine klasse abzurufen, die mit Visual Basic erstellt wurde.
Important
Die GetObject Funktion erfordert nicht verwaltete Codeberechtigungen, die sich auf die Ausführung in teilweise vertrauenswürdigen Situationen auswirken können. Weitere Informationen finden Sie unter SecurityPermission den Berechtigungen für den Codezugriff.