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 True
hodnotu . 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é drawObj
objektu . 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.