Interaction.CreateObject(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í.
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.