Interaction.GetObject(String, String) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
COM bileşeni tarafından sağlanan bir nesneye başvuru döndürür.
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The COM component to be returned cannot be statically analyzed and may be trimmed")]
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static object? GetObject(string? PathName = default, string? Class = default);
[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.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The COM component to be returned cannot be statically analyzed and may be trimmed")>]
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member GetObject : string * string -> obj
[<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
Optional.
String. Alınacak nesneyi içeren dosyanın tam yolu ve adı. Atlanırsa PathName , Class gereklidir.
- 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. Nesnesini 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 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 (GetObject) başvuru almak için excelObj işlevini kullanır. çalışma sayfasının Application özelliğini kullanarak Excel görünür hale getirir, kapatır ve diğer eylemleri gerçekleştirir. İki API çağrısı kullanarak detectExcel yordamı Excel arar ve çalışıyorsa, bunu Çalışan Nesne tablosuna girer. İlk GetObject çağrısı, Excel zaten çalışmıyorsa bir hataya neden olur ve bu örnekte excelWasNotRunning bayrağının True olarak ayarlanmasına neden 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 dosya tarafından 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 FileNotFoundException oluş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, nesnelerin türünde Option Strict Offdeğişkenlere atandığı geç bağlamayı kullandığından gerektirirObject. Visual Studio Option Strict On menüsünün Add Reference iletişim kutusunun COM sekmesinden Excel tür kitaplığına başvuru eklerseniz belirtebilir ve belirli nesne türlerinin nesnelerini 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
getExcel işlevini çağırdığınızda, Excel zaten çalışıp çalışmadığını görmek için bir denetim yapılır. Değilse, bir örnek oluşturulur.
Important
Kolaylık olması için, önceki örnekte XLMAIN adlı herhangi bir pencerenin Microsoft Excel örneğine ait olduğu varsayılır. Büyük olasılıkla yasadışı kurcalama yoluyla başlatılan başka bir nesne bu ada sahip bir pencere oluşturduysa, Excel için istediğiniz tüm iletileri alır. Üretim için kullanılacak bir uygulamada, XLMAIN'in gerçekten Excel ait olduğunu 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 Servis Talepleri
Sıfır uzunluklu bir dize ()PathName ise"", 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 bir çizimin birden çok katmanı 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 kodda buna 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")
Note
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 dosyayla başlatılmasını istemiyorsanız işlevini kullanın CreateObject .
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 GetObject kullanamazsınız.
Important
İş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.