Interaction.GetObject(String, String) Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Egy COM-összetevő által biztosított objektumra mutató hivatkozást ad vissza.
[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
Paraméterek
- PathName
- String
Optional.
String. A lekérni kívánt objektumot tartalmazó fájl teljes elérési útja és neve. Ha PathName nincs megadva, Class kötelező megadni.
- Class
- String
PathName Ha nincs megadva, kötelező megadni.
String. Az objektum osztályát jelölő sztring. Az Class argumentum szintaxisa és részei a következők:
appname.objecttype
[1|1] Paraméter
[1|2] Leírás
[2|1] appname
[2|2] Szükséges.
String. Az objektumot megadó alkalmazás neve.
[3|1] objecttype
[3|2] Szükséges.
String. A létrehozandó objektum típusa vagy osztálya.
Válaszok
Egy COM-összetevő által biztosított objektumra mutató hivatkozás.
- Attribútumok
Kivételek
A megadott osztálytípus egyik objektuma sem létezik.
A megadott elérési úttal és fájlnévvel nem létezik objektum.
Példák
Az alábbi példa a GetObject függvénnyel kér le egy adott Microsoft Excel munkalapra mutató hivatkozást (excelObj). A munkalap Application tulajdonságával láthatóvá teszi a Excel, bezárja és egyéb műveleteket hajt végre. Két API-hívással a detectExcel eljárás Excel keres, és ha fut, beírja a Futó objektum táblába. A GetObject első hívása hibát okoz, ha a Excel még nem fut, ami ebben a példában a excelWasNotRunning jelzőt True értékre állítja. A második hívás egy GetObject megnyitni kívánt fájlt határoz meg. Ha Excel még nem fut, a második hívás elindítja, és a megadott fájl által képviselt munkalapra mutató hivatkozást ad vissza, test.xls. A fájlnak a megadott helyen kell lennie; ellenkező esetben Visual Basic FileNotFoundException. Ezután a hibakód úgy az Excelt, mint a megadott munkalapot tartalmazó ablakot láthatóvá teszi.
Ez a példa azért szükséges Option Strict Off , mert késői kötést használ, ahol az objektumok típusváltozókhoz Objectvannak rendelve. Megadhatja Option Strict On és deklarálhatja az adott objektumtípusok objektumait, ha a COM lapjának Add Reference párbeszédpaneljének Project párbeszédpaneljének Visual Studio lapján adja hozzá a Excel típustárra.
' 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
Amikor meghívja a getExcel függvényt, ellenőrzi, hogy Excel fut-e már. Ha nem, akkor létrejön egy példány.
Important
Az egyszerűség kedvéért az előző példa feltételezi, hogy a XLMAIN nevű ablak a Microsoft Excel egy példányához tartozik. Ha egy másik objektum, amely esetleg tiltott illetéktelen módosítással lett elindítva, egy ilyen nevű ablakot hozott létre, akkor a Excel szánt összes üzenetet megkapja. Az éles környezetben használandó alkalmazásokban szigorúbb tesztelést kell alkalmaznia annak ellenőrzésére, hogy XLMAIN valóban Excel tartozik-e.
Megjegyzések
A függvény használatával GetObject betölthet egy COM-összetevő egy példányát egy fájlból. A következő példa ezt szemlélteti.
Dim CADObject As Object
CADObject = GetObject("C:\CAD\schema.cad")
A kód futtatásakor a megadotthoz PathName társított alkalmazás elindul, és a megadott fájlban lévő objektum aktiválódik.
Alapértelmezett esetek
Ha PathName nulla hosszúságú sztring (""), GetObject a megadott osztálytípus új objektumpéldányát adja vissza. Ha az PathName argumentum nincs megadva, GetObject a megadott Classosztálytípus egy jelenleg aktív objektumát adja vissza. Ha nincs a megadott típusú objektum, hibaüzenet jelenik meg.
Alobjektum elérése
Egyes alkalmazások lehetővé teszik egy fájlhoz társított alobjektum aktiválását. Ehhez adjon hozzá egy felkiáltójelet (!) a fájlnév végéhez, és kövesse azt egy sztringgel, amely azonosítja az aktiválni kívánt fájlrészt. Ha további információra van szüksége a karakterlánc létrehozásáról, tanulmányozza az objektumot létrehozó alkalmazás dokumentációját.
Egy rajzalkalmazásban például előfordulhat, hogy több réteggel rendelkezik egy fájlban tárolt rajzhoz. A következő kóddal aktiválhat egy réteget egy úgynevezett schema.cadrajzon belül.
layerObject = GetObject("C:\CAD\schema.cad!Layer3")
Osztály megadása
Ha nem adja meg az objektumot Class, az Automation a megadott fájlnév alapján határozza meg az elindítandó alkalmazást és az aktiválni kívánt objektumot. Egyes fájlok azonban több objektumosztályt is támogatnak. Egy rajz például három különböző típusú objektumot támogathat: egy Application objektumot, egy Drawing objektumot és egy Toolbar objektumot, amelyek mindegyike ugyanahhoz a fájlhoz tartozik. Ha meg szeretné adni, hogy melyik objektumot szeretné aktiválni egy fájlban, használja az opcionális Class argumentumot. A következő példa ezt szemlélteti.
Dim drawObj As Object
drawObj = GetObject("C:\Drawings\sample.drw", "Figment.Drawing")
Az előző példában egy rajzalkalmazás neve szerepel, Figment és Drawing az egyik olyan objektumtípus, amelyet támogat.
Az objektum használata
Miután aktivált egy objektumot, kódban hivatkozhat rá a deklarált objektumváltozó használatával. Az előző példában az új objektum tulajdonságait és metódusait az objektumváltozó drawObjhasználatával érheti el. A következő példa ezt szemlélteti.
drawObj.Line(9, 90)
drawObj.InsertText(9, 100, "Hello, world.")
drawObj.SaveAs("C:\Drawings\sample.drw")
Note
Akkor használja a GetObject függvényt, ha az objektumnak egy aktuális példánya van, vagy ha egy betöltött fájllal szeretné létrehozni az objektumot. Ha nincs aktuális példány, és nem szeretné, hogy az objektum betöltve legyen, használja a függvényt CreateObject .
Ha egy objektum ActiveX egypéldányos objektumként regisztrálta magát, az objektumnak csak egy példánya jön létre, függetlenül attól, hogy hányszor CreateObject van meghívva. Egypéldányos objektum esetén mindig ugyanazt a példányt adja vissza, GetObject amikor a nulla hosszúságú sztring ("") szintaxissal hívja meg, és hibát okoz, ha az PathName argumentum nincs megadva. A GetObject nem használható a Visual Basic által létrehozott osztályra mutató hivatkozás lekéréséhez.
Important
A GetObject függvény nem felügyelt kódengedélyt igényel, ami befolyásolhatja a részleges megbízhatósági helyzetekben történő végrehajtását. További információkért lásd SecurityPermission és kódhozzáférés engedélyeit.