Interaction.CreateObject(String, String) Yöntem

Tanım

BIR COM nesnesine başvuru oluşturur ve döndürür. CreateObject , bu sınıflar COM bileşenleri olarak açıkça gösterilmediği sürece Visual Basic'te sınıf örnekleri oluşturmak için kullanılamaz.

public static object CreateObject (string ProgId, string? ServerName = "");
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static object CreateObject (string ProgId, string? ServerName = "");
public static object CreateObject (string ProgId, string ServerName = "");
static member CreateObject : string * string -> obj
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member CreateObject : string * string -> obj
Public Function CreateObject (ProgId As String, Optional ServerName As String = "") As Object

Parametreler

ProgId
String

Gereklidir. String. Oluşturulacak nesnenin program kimliği.

ServerName
String

İsteğe bağlı. String. Nesnenin oluşturulacağı ağ sunucusunun adı. Boş bir dize ("") ise ServerName , yerel bilgisayar kullanılır.

Döndürülenler

BIR COM nesnesine başvuru oluşturur ve döndürür. CreateObject , bu sınıflar COM bileşenleri olarak açıkça gösterilmediği sürece Visual Basic'te sınıf örnekleri oluşturmak için kullanılamaz.

Öznitelikler

Özel durumlar

Sunucu kullanılamıyor

Belirtilen türdeki hiçbir nesne yok.

Örnekler

Aşağıdaki örnekte, bir Microsoft Excel çalışma sayfası oluşturmak için işlevi kullanılır CreateObject ve çalışma sayfası bir dosyaya kaydedilir. Bu örneği kullanmak için, Excel'in bu programın çalıştığı bilgisayara yüklenmesi gerekir. Ayrıca, Proje menüsündeki Başvuru Ekle iletişim kutusunun COM sekmesinden tür kitaplığına bir başvuru eklemeniz gerekir. Tür kitaplığının adı, bilgisayarınızda yüklü olan Excel sürümüne bağlı olarak değişir. Örneğin, Microsoft Excel 2002 tür kitaplığıNın adı Microsoft Excel 10.0 Nesne Kitaplığı'dır.

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

Açıklamalar

BIR COM bileşeninin örneğini oluşturmak için tarafından döndürülen CreateObject nesneyi bir nesne değişkenine atayın:

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

Döndürülen nesneyi depolamak için kullandığınız nesne değişkeninin türü uygulamanızın performansını etkileyebilir. yan tümcesiyle bir nesne değişkeni bildirilmesi As Object , herhangi bir nesne türüne başvuru içerebilen bir değişken oluşturur. Ancak, nesneye bu değişken aracılığıyla erişim geç bağlıdır, yani bağlama programınız çalıştırıldığında gerçekleşir. Daha yavaş uygulama performansı dahil olmak üzere geç bağlamayı önlemeniz gereken birçok neden vardır.

Erken bağlamaya, yani program derlendiğinde bağlamaya neden olan bir nesne değişkeni oluşturabilirsiniz. Bunu yapmak için, Proje menüsündeki Başvuru Ekle iletişim kutusunun COM sekmesinden nesnenizin tür kitaplığına bir başvuru ekleyin. Ardından nesnenizin belirli türünün nesne değişkenini bildirin. Çoğu durumda, nesneleri oluşturmak için deyimini Dim ve birincil birlikte çalışma derlemesini kullanmak, işlevini kullanmaktan CreateObject daha verimlidir.

Yönetilmeyen Kod ile Etkileşim

Bir diğer sorun da COM nesnelerinin ortak dil çalışma zamanının avantajı olmadan yönetilmeyen kod ( kod) kullanmasıdır. Visual Basic'in yönetilen kodunu COM'dan yönetilmeyen kodla karıştırmanın karmaşıklığı oldukça yüksektir. BIR COM nesnesine başvuru eklediğinizde, Visual Basic bu kitaplık için birincil birlikte çalışma derlemesi (PIA) arar; bulursa kullanır. Bir PIA bulamazsa, COM kitaplığındaki her sınıf için yerel birlikte çalışabilirlik sınıfları içeren bir birlikte çalışabilirlik derlemesi oluşturur. Daha fazla bilgi için bkz. .NET Framework Uygulamalarında COM Birlikte Çalışabilirliği.

Mümkün olduğunda genellikle kesin olarak bağlı nesneler ve birincil birlikte çalışma derlemeleri kullanmanız gerekir. Aşağıdaki örneklerde işlevi yalnızca gösterim amacıyla Microsoft Office nesneleriyle birlikte kullanabilirsiniz CreateObject . Ancak, bu nesnelerin kullanımı daha kolaydır ve uygun birincil birlikte çalışma derlemesi ile kullanıldığında daha güvenilirdir.

Uzak Bilgisayarda Nesne Oluşturma

Uzak ağa bağlı bir bilgisayarda, işlevin bağımsız değişkenine ServerNameCreateObject bilgisayarın adını geçirerek bir nesne oluşturabilirsiniz. Bu ad, paylaşım adının Makine Adı bölümüyle aynıdır: "\\MyServer\Public" ServerName adlı bir paylaşım için "MyServer"dır.

Not

Bir uygulamayı uzak ağa bağlı bir bilgisayarda erişilebilir hale getirme hakkında ek bilgi için COM belgelerine bakın (bkz. Microsoft Geliştirici Ağı). Uygulamanız için bir kayıt defteri anahtarı eklemeniz gerekebilir.

Aşağıdaki kod, adlı MyServeruzak bilgisayarda çalışan bir Excel örneğinin sürüm numarasını döndürür:

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  

Uzak sunucu adı yanlışsa veya kullanılamıyorsa bir çalışma zamanı hatası oluşur.

Not

Nesnenin geçerli bir örneği olmadığında kullanın CreateObject . Nesnenin bir örneği zaten çalışıyorsa, yeni bir örnek başlatılır ve belirtilen türde bir nesne oluşturulur. Geçerli örneği kullanmak veya uygulamayı başlatıp bir dosya yüklemesini sağlamak için işlevini kullanın GetObject . Bir nesne kendisini tek örnekli nesne olarak kaydettiyse, kaç kez CreateObject yürütülürse yürütülsün, nesnenin yalnızca bir örneği oluşturulur.

Framework Nesneleri Oluşturma

işlevini yalnızca COM nesnesi oluşturmak için kullanabilirsiniz CreateObject . .NET Framework nesnesi oluşturmak için tam olarak eşdeğer bir mekanizma olmasa da, Activator ad alanında System yerel veya uzak nesneler oluşturma yöntemleri bulunur. Özellikle yöntemi CreateInstance veya CreateInstanceFrom yöntemi yararlı olabilir.

Önemli

İşlev, CreateObject kısmi güven durumlarında yürütülmesini etkileyebilecek yönetilmeyen kod izni gerektirir. Daha fazla bilgi için bkz SecurityPermission . ve Kod Erişim İzinleri.

Şunlara uygulanır

Ayrıca bkz.