Interaction.CreateObject(String, String) Metoda

Definice

Vytvoří a vrátí odkaz na objekt COM. CreateObject nelze použít k vytváření instancí tříd v Visual Basic, pokud tyto třídy nejsou explicitně vystaveny jako komponenty modelu COM.

[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The COM object to be created cannot be statically analyzed and may be trimmed")]
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static object CreateObject(string ProgId, string? ServerName = "");
public static object CreateObject(string ProgId, string? ServerName = "");
public static object CreateObject(string ProgId, string ServerName = "");
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The COM object to be created cannot be statically analyzed and may be trimmed")>]
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member CreateObject : string * string -> obj
static member CreateObject : string * string -> obj
Public Function CreateObject (ProgId As String, Optional ServerName As String = "") As Object

Parametry

ProgId
String

Required. String. ID programu objektu, který chcete vytvořit.

ServerName
String

Optional. String. Název síťového serveru, na kterém bude objekt vytvořen. Pokud ServerName je prázdný řetězec (""), použije se místní počítač.

Návraty

Vytvoří a vrátí odkaz na objekt COM. CreateObject nelze použít k vytváření instancí tříd v Visual Basic, pokud tyto třídy nejsou explicitně vystaveny jako komponenty modelu COM.

Atributy

Výjimky

Server není k dispozici

Neexistuje žádný objekt zadaného typu.

Příklady

Následující příklad používá funkci CreateObject k vytvoření Microsoft Excel listu a uložení listu do souboru. Chcete-li tento příklad použít, musí být Excel nainstalován v počítači, na kterém běží tento program. Musíte také přidat odkaz na knihovnu typů z karty COM v dialogovém okně Přidat odkaz v nabídce Project. Název knihovny typů se liší v závislosti na verzi Excel nainstalované v počítači. Například knihovna typů pro Microsoft Excel 2002 má název Microsoft Excel 10.0 Object Library.

Sub TestExcel()
    Dim xlApp As Microsoft.Office.Interop.Excel.Application
    Dim xlBook As Microsoft.Office.Interop.Excel.Workbook
    Dim xlSheet As Microsoft.Office.Interop.Excel.Worksheet

    xlApp = CType(CreateObject("Excel.Application"), 
                Microsoft.Office.Interop.Excel.Application)
    xlBook = CType(xlApp.Workbooks.Add, 
                Microsoft.Office.Interop.Excel.Workbook)
    xlSheet = CType(xlBook.Worksheets(1), 
                Microsoft.Office.Interop.Excel.Worksheet)

    ' The following statement puts text in the second row of the sheet.
    xlSheet.Cells(2, 2) = "This is column B row 2"
    ' The following statement shows the sheet.
    xlSheet.Application.Visible = True
    ' The following statement saves the sheet to the C:\Test.xls directory.
    xlSheet.SaveAs("C:\Test.xls")
    ' Optionally, you can call xlApp.Quit to close the workbook.
End Sub

Poznámky

Pokud chcete vytvořit instanci komponenty COM, přiřaďte objekt vrácený CreateObject proměnné objektu:

Sub CreateADODB()
   Dim adoApp As Object
   adoApp = CreateObject("ADODB.Connection")
End Sub

Typ proměnné objektu, kterou použijete k uložení vráceného objektu, může ovlivnit výkon vaší aplikace. Deklarace proměnné objektu pomocí klauzule As Object vytvoří proměnnou, která může obsahovat odkaz na libovolný typ objektu. Přístup k objektu prostřednictvím této proměnné je však zpožděn, to znamená, že vazba nastane při spuštění programu. Existuje mnoho důvodů, proč byste se měli vyhnout pozdní vazbě, včetně pomalejšího výkonu aplikace.

Můžete vytvořit proměnnou objektu, která má za následek počáteční vazbu – to znamená vazbu při kompilaci programu. Uděláte to tak, že v dialogovém okně COM kartě c1>Přidat odkaz v nabídce Project přidáte odkaz na knihovnu typů pro objekt. Pak deklarujte proměnnou objektu konkrétního typu objektu. Ve většině případů je efektivnější použít Dim příkaz a primární sestavení vzájemné spolupráce k vytvoření objektů, než je použití CreateObject funkce.

Interakce s nespravovaným kódem

Dalším problémem je, že objekty COM používají nespravovaný kód – kód bez výhody modulu CLR (Common Language Runtime). Při kombinování spravovaného kódu Visual Basic s nespravovaným kódem z modelu COM je poměrně složitá složitost. Když přidáte odkaz na objekt MODELU COM, Visual Basic vyhledá primární sestavení vzájemné spolupráce (PIA) pro tuto knihovnu; pokud ho najde, použije ho. Pokud pia nenajde, vytvoří sestavení interoperability, které obsahuje třídy místní interoperability pro každou třídu v knihovně COM. Další informace naleznete v tématu Interoperabilita modelu COM v aplikacích rozhraní .NET Framework.

Obecně byste měli používat objekty silné vazby a primární sestavení vzájemné spolupráce, kdykoli je to možné. Následující příklady používají funkci CreateObject s objekty systém Microsoft Office pouze pro demonstrační účely. Tyto objekty jsou však jednodušší a spolehlivější při použití s příslušným primárním sestavením vzájemné spolupráce.

Vytvoření objektu ve vzdáleném počítači

Objekt můžete vytvořit ve vzdáleném síťovém počítači předáním názvu počítače do ServerName argumentu CreateObject funkce. Tento název je stejný jako část Název počítače názvu sdílené složky: pro sdílenou složku s názvem \\MyServer\Public ServerName je "MyServer".

Note

Další informace o zpřístupnění aplikace na vzdáleném síťovém počítači najdete v dokumentaci modelu COM (viz web MSDN (Microsoft Developer Network)). Možná budete muset přidat klíč registru pro vaši aplikaci.

Následující kód vrátí číslo verze instance aplikace Excel spuštěné ve vzdáleném počítači s názvem MyServer:

Sub CreateRemoteExcelObj()
    Dim xlApp As Object
    ' Replace string "\\MyServer" with name of the remote computer.
    xlApp = CreateObject("Excel.Application", "\\MyServer")
    MsgBox(xlApp.Version)
End Sub

Pokud je název vzdáleného serveru nesprávný nebo je nedostupný, dojde k chybě za běhu.

Note

Použijte CreateObject , pokud neexistuje žádná aktuální instance objektu. Pokud je instance objektu již spuštěna, spustí se nová instance a vytvoří se objekt zadaného typu. Pokud chcete použít aktuální instanci nebo spustit aplikaci a načíst soubor, použijte GetObject funkci. Pokud se objekt zaregistroval jako objekt s jednou instancí, vytvoří se pouze jedna instance objektu bez ohledu na to, kolikrát CreateObject se spustí.

Vytváření objektů architektury

Funkci můžete použít CreateObject pouze k vytvoření objektu COM. I když neexistuje žádný přesný ekvivalentní mechanismus pro vytvoření objektu .NET Framework, Activator v oboru názvů System obsahuje metody pro vytvoření místních nebo vzdálených objektů. Konkrétně CreateInstance může být užitečná metoda nebo CreateInstanceFrom metoda.

Important

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

Platí pro

Viz také