Aracılığıyla paylaş


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. Nesnenin sınıfını temsil eden bir dize. Bağımsız Class değişken aşağıdaki söz dizimine ve bölümlerine 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üne ait hiçbir nesne yok.

Belirtilen yola ve dosya adına sahip 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 kılmak, 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ğın excelWasNotRunning olarak ayarlanmasına Trueneden olur. İkinci çağrısı 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ünde Objectdeğişkenlere atandığı geç bağlamayı 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ışır durumda olup olmadığı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. Büyük olasılıkla yetkisiz kurcalama yoluyla başlatılan başka bir nesne, bu ada sahip bir pencere oluşturursa, Excel için hedeflediğ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şkili 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, 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 dosyayı etkinleştirmek istediğiniz bölümünü tanımlayan bir dizeyle izleyin. Bu dizeyi oluşturma hakkında bilgi için, nesneyi oluşturan uygulamanın belgelerine bakın.

Örneğin, bir çizim uygulamasında, bir dosyada depolanan çizime yönelik 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 Classdeğerini 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ıdır 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. Yukarıdaki ö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

Nesnenin GetObject geçerli bir örneği olduğunda veya nesneyi yüklü bir dosyayla 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.