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:
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 True
festgelegt. 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.xls
das 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 Object
zugewiesen 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 Class
angegebenen 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.cad
zu aktivieren.
layerObject = GetObject("C:\CAD\schema.cad!Layer3")
Angeben einer Klasse
Wenn Sie das Objekt Class
nicht 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 drawObj
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")
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.