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 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.