Interaction.GetObject(String, String) Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Retourneert een verwijzing naar een object dat wordt geleverd door een COM-onderdeel.
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
Parameters
- PathName
- String
Optional.
String. Het volledige pad en de naam van het bestand met het object dat u wilt opvragen. Als PathName u dit weglaat, Class is dit vereist.
- Class
- String
Vereist indien PathName niet opgegeven.
String. Een tekenreeks die de klasse van het object vertegenwoordigt. Het Class argument heeft de volgende syntaxis en onderdelen:
appname.objecttype
[1|1] Parameter
[1|2] Beschrijving
[2|1] appname
[2|2] Vereist.
String. De naam van de toepassing die het object levert.
[3|1] objecttype
[3|2] Vereist.
String. Het type of de klasse van het object dat moet worden gemaakt.
Retouren
Een verwijzing naar een object dat wordt geleverd door een COM-onderdeel.
Uitzonderingen
Er bestaat geen object van het opgegeven klassetype.
Er bestaat geen object met het opgegeven pad en de bestandsnaam.
Voorbeelden
In het volgende voorbeeld wordt de functie GetObject gebruikt om een verwijzing te verkrijgen naar een specifiek Microsoft Excel werkblad (excelObj). De eigenschap Application van het werkblad wordt gebruikt om Excel zichtbaar te maken, te sluiten en andere acties uit te voeren. Met behulp van twee API-aanroepen zoekt de procedure detectExcel naar Excel en als deze wordt uitgevoerd, voert u deze in de tabel Running Object in. De eerste aanroep naar GetObject veroorzaakt een fout als Excel nog niet wordt uitgevoerd. In dit voorbeeld wordt de vlag excelWasNotRunning ingesteld op True. De tweede aanroep om een bestand op te GetObject geven dat moet worden geopend. Als Excel nog niet wordt uitgevoerd, wordt deze door de tweede aanroep gestart en wordt een verwijzing naar het werkblad geretourneerd dat wordt vertegenwoordigd door het opgegeven bestand, test.xls. Het bestand moet aanwezig zijn op de opgegeven locatie; anders gooit Visual Basic een FileNotFoundException. Vervolgens maakt de voorbeeldcode zowel Excel als het venster met het opgegeven werkblad zichtbaar.
Dit voorbeeld vereist Option Strict Off omdat het late binding gebruikt, waarbij objecten worden toegewezen aan variabelen van het type Object. U kunt Option Strict On opgeven en objecten van specifieke objecttypen declareren als u een verwijzing naar de Excel-typebibliotheek toevoegt vanaf het tabblad COM van het Verwijzing dialoogvenster van het Projectmenu in Visual Studio.
' 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
Wanneer u de functie getExcel aanroept, wordt er gecontroleerd of Excel al wordt uitgevoerd. Als dit niet het geval is, wordt er een exemplaar gemaakt.
Important
In het voorgaande voorbeeld wordt ervan uitgegaan dat een venster met de naam XLMAIN behoort tot een exemplaar van Microsoft Excel. Als een ander object, mogelijk gestart door illegale manipulatie, een venster met die naam heeft gemaakt, ontvangt het alle berichten die u voor Excel hebt bedoeld. In een toepassing die moet worden gebruikt voor productie, moet u een aantal strengere tests opnemen om te controleren of XLMAIN echt tot Excel behoort.
Opmerkingen
Gebruik de GetObject functie om een exemplaar van een COM-onderdeel uit een bestand te laden. Dit wordt geïllustreerd in het volgende voorbeeld.
Dim CADObject As Object
CADObject = GetObject("C:\CAD\schema.cad")
Wanneer deze code wordt uitgevoerd, wordt de toepassing die is gekoppeld aan de opgegeven PathName , gestart en wordt het object in het opgegeven bestand geactiveerd.
Standaardcases
Als PathName dit een tekenreeks met lengte nul is (""), GetObject retourneert u een nieuw objectexemplaren van het opgegeven klassetype. Als het PathName argument wordt weggelaten, GetObject retourneert u een momenteel actief object van het klassetype dat is opgegeven in Class. Er treedt een fout op als er geen object van het opgegeven type bestaat.
Toegang tot een subobject
In sommige toepassingen kunt u een subobject activeren dat is gekoppeld aan een bestand. Als u dit wilt doen, voegt u een uitroepteken (!) toe aan het einde van de bestandsnaam en volgt u deze met een tekenreeks die het deel van het bestand aangeeft dat u wilt activeren. Als u meer wilt weten over de samenstelling van deze tekenreeks, raadpleegt u de documentatie van de toepassing waarmee het object is gemaakt.
In een tekenprogramma kunt u bijvoorbeeld meerdere lagen van een tekening opslaan in een bestand. U kunt de volgende code gebruiken om een laag in een tekening met de naam schema.cadte activeren.
layerObject = GetObject("C:\CAD\schema.cad!Layer3")
Een klasse opgeven
Als u de objecten Classniet opgeeft, bepaalt Automation de toepassing die moet worden gestart en het object dat moet worden geactiveerd, op basis van de bestandsnaam die u opgeeft. Sommige bestanden kunnen echter meer dan één klasse van het object ondersteunen. Een tekening ondersteunt bijvoorbeeld drie verschillende typen objecten: een Application object, een Drawing object en een Toolbar object, die allemaal deel uitmaken van hetzelfde bestand. Als u wilt opgeven welk object in een bestand u wilt activeren, gebruikt u het optionele Class argument. Dit wordt geïllustreerd in het volgende voorbeeld.
Dim drawObj As Object
drawObj = GetObject("C:\Drawings\sample.drw", "Figment.Drawing")
In het voorgaande voorbeeld Figment is dit de naam van een tekentoepassing en Drawing is dit een van de objecttypen die worden ondersteund.
Het object gebruiken
Zodra een object is geactiveerd, verwijst u ernaar in code met behulp van de objectvariabele die u hebt gedeclareerd. In het voorgaande voorbeeld opent u eigenschappen en methoden van het nieuwe object met behulp van de objectvariabele drawObj. Dit wordt geïllustreerd in het volgende voorbeeld.
drawObj.Line(9, 90)
drawObj.InsertText(9, 100, "Hello, world.")
drawObj.SaveAs("C:\Drawings\sample.drw")
Note
Gebruik de GetObject functie wanneer er een huidig exemplaar van het object is of als u het object wilt maken met een bestand dat is geladen. Als er geen actueel exemplaar is en u niet wilt dat het object wordt gestart met een bestand dat is geladen, gebruikt u de CreateObject functie.
Als een object zich heeft geregistreerd als een ActiveX-object met één exemplaar, wordt er slechts één exemplaar van het object gemaakt, ongeacht hoe vaak CreateObject het wordt aangeroepen. Met een object met één exemplaar wordt GetObject altijd hetzelfde exemplaar geretourneerd wanneer deze wordt aangeroepen met de syntaxis van de tekenreeks met"" lengte nul en wordt een fout veroorzaakt als het PathName argument wordt weggelaten. U kunt GetObject niet gebruiken om een verwijzing te verkrijgen naar een klasse die is gemaakt met Visual Basic.
Important
Voor de GetObject functie is een niet-beheerde codemachtiging vereist, wat van invloed kan zijn op de uitvoering ervan in gedeeltelijke vertrouwenssituaties. Zie en Machtigingen voor codetoegang voor meer informatieSecurityPermission.