Interaction.GetObject(String, String) Metoda

Definice

Vrátí odkaz na objekt poskytnutý komponentou MODELU COM.

[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

Parametry

PathName
String

Nepovinný parametr. String. Úplná cesta a název souboru obsahujícího objekt, který se má načíst. Pokud PathName je vynechán, Class je povinný.

Class
String

Požadováno, pokud PathName není zadáno. 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 poskytovaný komponentou modelu 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á GetObject funkci k získání odkazu na konkrétní list aplikace Microsoft Excel (excelObj). Používá vlastnost listu Application k tomu, aby byl Excel viditelný, zavřel ho a prováděl další akce. Při použití dvou volání detectExcel rozhraní API tento postup vyhledá Excel, a pokud je spuštěný, zadá ho 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 excelWasNotRunning způsobí, že příznak bude nastaven na Truehodnotu . Druhé volání GetObject určuje soubor, který se má otevřít. Pokud excel ještě není spuštěný, spustí ho druhé volání a vrátí odkaz na list reprezentovaný zadaným souborem test.xls. Soubor musí existovat v zadaném umístění; v opačném případě Visual Basic vyvolá FileNotFoundException. Ukázkový kód dále zviditelní 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 určit Option Strict On a deklarovat objekty určitých typů objektů, pokud přidáte odkaz na knihovnu typů aplikace Excel z karty COM dialogového okna Přidat odkaz v nabídce Projekt v sadě 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

Při volání getExcel funkce se provede kontrola, jestli je excel už spuštěný. Pokud tomu tak není, vytvoří se instance.

Důležité

Předchozí příklad pro zjednodušení předpokládá, že jakékoli okno s názvem XLMAIN patří instanci Aplikace Microsoft Excel. Pokud by jiný objekt, pravděpodobně spuštěný nedovolenou manipulací, vytvořil okno s tímto názvem, obdrží všechny zprávy, které jste chtěli pro Excel. V aplikaci, která se má používat v produkčním prostředí, byste měli zahrnout několik přísnějších testů, abyste ověřili, že XLMAIN skutečně patří do Excelu.

Poznámky

GetObject Pomocí funkce načtěte instanci komponenty MODELU COM ze souboru. Toto dokládá následující příklad.

Dim CADObject As Object  
CADObject = GetObject("C:\CAD\schema.cad")  

Při spuštění tohoto kódu se spustí aplikace přidružená k zadanému PathName souboru 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é v Class. Pokud neexistuje žádný objekt zadaného typu, dojde k chybě.

Přístup k podřízeným objektům

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 za ním řetězec, který identifikuje část souboru, kterou chcete aktivovat. Informace o tom, jak tento řetězec vytvořit, 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. Následující kód můžete použít k aktivaci vrstvy ve výkresu s názvem schema.cad.

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

Určení třídy

Pokud nezadá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 objektů. Výkres může například podporovat tři různé typy objektů: Application objekt, Drawing objekt a Toolbar objekt, které jsou všechny součástí stejného souboru. Pokud chcete určit, který objekt v souboru chcete aktivovat, použijte volitelný Class argument. Toto dokládá 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 aplikace výkresu a Drawing je jedním z typů objektů, Figment které podporuje.

Používání 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 . Toto dokládá následující příklad.

drawObj.Line(9, 90)  
drawObj.InsertText(9, 100, "Hello, world.")  
drawObj.SaveAs("C:\Drawings\sample.drw")  

Poznámka

Funkci použijte, GetObject pokud existuje aktuální instance objektu nebo pokud chcete vytvořit objekt s načteným souborem. Pokud neexistuje žádná aktuální instance a nechcete, aby se objekt začal načítat souborem, použijte CreateObject funkci .

Pokud se objekt zaregistroval jako objekt ActiveX s jednou instancí, vytvoří se pouze jedna instance objektu bez ohledu na to, kolikrát CreateObject je volána. U objektu s jednou instancí vždy vrátí stejnou instanci při GetObject volání se syntaxí řetězce nulové délky (""), a pokud PathName argument vynecháte, způsobí chybu. Nelze použít GetObject k získání odkazu na třídu vytvořenou pomocí jazyka Visual Basic.

Důležité

Funkce GetObject vyžaduje oprávnění nespravovaného kódu, což může mít vliv na její provádění v situacích s částečnou důvěryhodností. Další informace najdete v tématech SecurityPermission a Přístupová oprávnění ke kódu.

Platí pro

Viz také