Interaction.GetObject(String, String) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Vrátí odkaz na objekt poskytnutý komponentou COM.
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The COM component to be returned cannot be statically analyzed and may be trimmed")]
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static object? GetObject(string? PathName = default, string? Class = default);
[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.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The COM component to be returned cannot be statically analyzed and may be trimmed")>]
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member GetObject : string * string -> obj
[<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
Parametry
- PathName
- String
Optional.
String. Úplná cesta a název souboru obsahujícího objekt, který se má načíst. Pokud PathName je tento parametr vynechán, Class je povinný.
- Class
- String
Vyžaduje se, pokud PathName není zadán.
String. Řetězec představující třídu objektu. Argument Class má následující syntaxi a části:
appname.objecttype
[1|1] Parametr
[1|2] Popis
[2|1] appname
[2|2] Požadované.
String. Název aplikace poskytující objekt.
[3|1] objecttype
[3|2] Požadované.
String. Typ nebo třída objektu, který chcete vytvořit.
Návraty
Odkaz na objekt poskytnutý komponentou COM.
- Atributy
Výjimky
Neexistuje žádný objekt zadaného typu třídy.
Neexistuje žádný objekt se zadanou cestou a názvem souboru.
Příklady
Následující příklad používá funkci GetObject k získání odkazu na konkrétní list Microsoft Excel (excelObj). Používá vlastnost Application listu k zobrazení Excel, zavření a provádění dalších akcí. Pomocí dvou volání rozhraní API vyhledá procedura detectExcel Excel a pokud je spuštěná, zadá ji do tabulky Spuštěný objekt. První volání GetObject způsobí chybu, pokud Excel ještě není spuštěný, což v tomto příkladu způsobí, že příznak excelWasNotRunning bude nastaven na True. Druhé volání GetObject určuje soubor, který se má otevřít. Pokud Excel ještě není spuštěný, spustí se druhé volání a vrátí odkaz na list reprezentovaný zadaným souborem test.xls. Soubor musí existovat v zadaném umístění; jinak Visual Basic vyvolá FileNotFoundException. V dalším příkladu kódu se zobrazí Excel i okno obsahující zadaný list.
Tento příklad vyžaduje Option Strict Off , protože používá pozdní vazbu, kde objekty jsou přiřazeny proměnným typu Object. Můžete zadat Option Strict On a deklarovat objekty konkrétních typů, pokud přidáte odkaz na knihovnu typů Excel z COM na kartě Přidat odkaz v nabídce Project v 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
Když zavoláte funkci getExcel, provede se kontrola, jestli už Excel běží. Pokud tomu tak není, vytvoří se instance.
Important
Pro zjednodušení předchozí příklad předpokládá, že jakékoli okno s názvem XLMAIN patří do instance Microsoft Excel. Pokud by jiný objekt, pravděpodobně spuštěný neoprávněnou manipulací, vytvořil okno s tímto jménem, obdrží všechny zprávy, které jste chtěli pro Excel. V aplikaci, která se má použít pro produkční prostředí, byste měli zahrnout přísnější testování, abyste ověřili, že XLMAIN skutečně patří do Excel.
Poznámky
GetObject Pomocí funkce načtěte instanci komponenty COM ze souboru. Ilustruje to následující příklad.
Dim CADObject As Object
CADObject = GetObject("C:\CAD\schema.cad")
Když se tento kód spustí, spustí se aplikace přidružená k zadanému souboru PathName a objekt v zadaném souboru se aktivuje.
Výchozí případy
Pokud PathName je řetězec nulové délky (""), GetObject vrátí novou instanci objektu zadaného typu třídy.
PathName Pokud je argument vynechán, GetObject vrátí aktuálně aktivní objekt typu třídy zadaného v Class. Pokud neexistuje žádný objekt zadaného typu, dojde k chybě.
Přístup k podobjektu
Některé aplikace umožňují aktivovat podobjekt přidružený k souboru. Uděláte to tak, že na konec názvu souboru přidáte vykřičník (!) a budete ho následovat řetězcem, který identifikuje část souboru, kterou chcete aktivovat. Informace o tom, jak vytvořit tento řetězec, najdete v dokumentaci k aplikaci, která objekt vytvořila.
Například v aplikaci výkresu můžete mít více vrstev výkresu uloženého v souboru. Pomocí následujícího kódu můžete aktivovat vrstvu ve výkresu s názvem schema.cad.
layerObject = GetObject("C:\CAD\schema.cad!Layer3")
Určení třídy
Pokud neurčíte objekt Class, Automation určí aplikaci, která se má spustit, a objekt, který se má aktivovat, na základě zadaného názvu souboru. Některé soubory však mohou podporovat více než jednu třídu objektu. Výkres může například podporovat tři různé typy objektů: Application objekt, Drawing objekt a Toolbar objekt, z nichž všechny jsou součástí stejného souboru. Chcete-li určit, který objekt v souboru chcete aktivovat, použijte volitelný Class argument. Ilustruje to následující příklad.
Dim drawObj As Object
drawObj = GetObject("C:\Drawings\sample.drw", "Figment.Drawing")
V předchozím příkladu je název výkresové aplikace a Figment je jedním z typů objektů, Drawing které podporuje.
Použití objektu
Jakmile je objekt aktivován, odkazujete na něj v kódu pomocí proměnné objektu, kterou jste deklarovali. V předchozím příkladu přistupujete k vlastnostem a metodám nového objektu pomocí proměnné drawObjobjektu . Ilustruje to následující příklad.
drawObj.Line(9, 90)
drawObj.InsertText(9, 100, "Hello, world.")
drawObj.SaveAs("C:\Drawings\sample.drw")
Note
GetObject Funkci použijte, pokud existuje aktuální instance objektu nebo pokud chcete vytvořit objekt se načteným souborem. Pokud neexistuje žádná aktuální instance a nechcete, aby byl objekt spuštěn s načteným souborem, použijte CreateObject funkci.
Pokud se objekt zaregistroval jako objekt s jednou instancí ActiveX, vytvoří se pouze jedna instance objektu bez ohledu na to, kolikrát CreateObject se volá. U objektu s jednou instancí vždy vrátí stejnou instanci při GetObject volání pomocí syntaxe řetězce nulové délky ("") a způsobí chybu, pokud PathName je argument vynechán. Nelze použít GetObject k získání odkazu na třídu vytvořenou pomocí Visual Basic.
Important
Funkce GetObject vyžaduje nespravované oprávnění ke kódu, které může ovlivnit jeho spuštění v situacích částečné důvěryhodnosti. Další informace najdete v tématu SecurityPermission a oprávnění pro přístup ke kódu.