Interaction.GetObject(String, String) Yöntem

Tanım

COM bileşeni tarafından sağlanan bir nesneye başvuru döndürür.

[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

Parametreler

PathName
String

İsteğe bağlı. String. Alınacak nesneyi içeren dosyanın tam yolu ve adı. Atlanırsa PathName gereklidir Class .

Class
String

Sağlanmazsa PathName gereklidir. String. Nesnesinin sınıfını temsil eden bir dize. Bağımsız Class değişken aşağıdaki söz dizimine ve bölümlere sahiptir:

appname.objecttype

[1|1] Parametre

[1|2] Açıklama

[2|1] appname

[2|2] Gerekli. String. Nesneyi sağlayan uygulamanın adı.

[3|1] objecttype

[3|2] Gerekli. String. Oluşturulacak nesnenin türü veya sınıfı.

Döndürülenler

COM bileşeni tarafından sağlanan bir nesneye başvuru.

Öznitelikler

Özel durumlar

Belirtilen sınıf türünde nesne yok.

Belirtilen yola ve dosya adına sahip bir nesne yok.

Örnekler

Aşağıdaki örnek, belirli bir Microsoft Excel çalışma sayfasına (excelObj ) başvuru almak için işlevini kullanırGetObject. Excel'i Application görünür yapmak, kapatmak ve diğer eylemleri gerçekleştirmek için çalışma sayfasının özelliğini kullanır. İki API çağrısı kullanıldığında, detectExcel yordam Excel'i arar ve çalışıyorsa Bunu Çalışan Nesne tablosuna girer. için ilk çağrı GetObject , Excel zaten çalışmıyorsa bir hataya neden olur ve bu örnekte bayrağı olarak excelWasNotRunning ayarlanmasına Trueneden olur. için yapılan ikinci çağrı GetObject , açılacak dosyayı belirtir. Excel henüz çalışmıyorsa, ikinci çağrı onu başlatır ve belirtilen dosyayla temsil edilen çalışma sayfasına bir başvuru döndürür. test.xls Dosya belirtilen konumda bulunmalıdır; aksi takdirde, Visual Basic bir FileNotFoundExceptionoluşturur. Ardından, örnek kod hem Excel'i hem de belirtilen çalışma sayfasını içeren pencereyi görünür hale getirir.

Bu örnek gerektirir Option Strict Off çünkü nesnelerin türüne Objectsahip değişkenlere atandığı geç bağlama kullanır. Visual Studio'da Proje menüsünün Başvuru Ekle iletişim kutusunun COM sekmesinden Excel tür kitaplığına başvuru eklerseniz, belirli nesne türlerinin nesnelerini belirtebilir Option Strict On ve bildirebilirsiniz.

' 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

İşlevi getExcel çağırdığınızda, Excel'in zaten çalışıp çalışmadığını görmek için bir denetim yapılır. Değilse bir örnek oluşturulur.

Önemli

Kolaylık olması için, önceki örnekte adlı XLMAIN herhangi bir pencerenin bir Microsoft Excel örneğine ait olduğu varsayılır. Yasadışı kurcalama yoluyla başlatılmış olabilecek başka bir nesne bu adla bir pencere oluşturduysa, Excel için istediğiniz tüm iletileri alır. Üretim için kullanılacak bir uygulamada, gerçekten Excel'e ait olduğunu XLMAIN doğrulamak için biraz daha sıkı test eklemeniz gerekir.

Açıklamalar

GetObject bir dosyadan COM bileşeninin bir örneğini yüklemek için işlevini kullanın. Aşağıdaki örnek bunu göstermektedir.

Dim CADObject As Object  
CADObject = GetObject("C:\CAD\schema.cad")  

Bu kod çalıştırıldığında, belirtilen PathName ile ilişkilendirilmiş uygulama başlatılır ve belirtilen dosyadaki nesne etkinleştirilir.

Varsayılan Durumlar

Sıfır uzunluklu bir dize ()"" isePathName, GetObject belirtilen sınıf türünün yeni bir nesne örneğini döndürür. PathName Bağımsız değişken atlanırsa, GetObject içinde Classbelirtilen sınıf türünün şu anda etkin bir nesnesini döndürür. Belirtilen türde bir nesne yoksa bir hata oluşur.

Alt Nesneye Erişme

Bazı uygulamalar, bir dosyayla ilişkilendirilmiş bir alt nesne etkinleştirmenize olanak tanır. Bunu yapmak için, dosya adının sonuna bir ünlem işareti (!) ekleyin ve etkinleştirmek istediğiniz dosyanın bölümünü tanımlayan bir dizeyle izleyin. Bu dizenin nasıl oluşturulacağı hakkında bilgi için, nesneyi oluşturan uygulamanın belgelerine bakın.

Örneğin, bir çizim uygulamasında, dosyada depolanan bir çizime birden çok katmanınız olabilir. adlı schema.cadçizim içindeki bir katmanı etkinleştirmek için aşağıdaki kodu kullanabilirsiniz.

layerObject = GetObject("C:\CAD\schema.cad!Layer3")  

Sınıf Belirtme

nesnesinin Classöğesini belirtmezseniz Otomasyon, başlatılacak uygulamayı ve etkinleştireceğiniz nesneyi sağladığınız dosya adına göre belirler. Ancak bazı dosyalar birden fazla nesne sınıfını destekleyebilir. Örneğin, bir çizim üç farklı nesne türünü destekleyebileceğinden: tümü ApplicationDrawing aynı dosyanın parçası olan bir nesne, bir nesne ve bir Toolbar nesne. Bir dosyada hangi nesneyi etkinleştirmek istediğinizi belirtmek için isteğe bağlı Class bağımsız değişkenini kullanın. Aşağıdaki örnek bunu göstermektedir.

Dim drawObj As Object  
drawObj = GetObject("C:\Drawings\sample.drw", "Figment.Drawing")  

Yukarıdaki örnekte, Figment bir çizim uygulamasının adı ve Drawing desteklediği nesne türlerinden biridir.

Nesneyi Kullanma

Bir nesne etkinleştirildikten sonra, bildirdiğiniz nesne değişkenini kullanarak bu nesneye kodda başvurursunuz. Önceki örnekte, nesne değişkenini drawObjkullanarak yeni nesnenin özelliklerine ve yöntemlerine erişeceksiniz. Aşağıdaki örnek bunu göstermektedir.

drawObj.Line(9, 90)  
drawObj.InsertText(9, 100, "Hello, world.")  
drawObj.SaveAs("C:\Drawings\sample.drw")  

Not

nesnesinin GetObject geçerli bir örneği olduğunda veya nesneyi dosya yüklenmiş olarak oluşturmak istiyorsanız işlevini kullanın. Geçerli bir örnek yoksa ve nesnenin bir dosya yüklenmiş olarak başlatılmasını CreateObject istemiyorsanız işlevini kullanın.

Bir nesne kendisini ActiveX tek örnekli nesnesi olarak kaydettiyse, kaç kez CreateObject çağrılırsa çağrılsın, nesnenin yalnızca bir örneği oluşturulur. Tek örnekli bir nesneyle, GetObject sıfır uzunluklu dize ("") söz dizimi ile çağrıldığında her zaman aynı örneği döndürür ve bağımsız değişken atlanırsa hataya PathName neden olur. Visual Basic ile oluşturulan bir sınıfa başvuru almak için kullanamazsınız GetObject .

Önemli

İşlev, GetObject 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.